-spec rsa_sha256_sign(Content :: binary(), PriKey :: binary()) -> binary().
rsa_sha256_sign(Content, PriKey) ->
[Entry] = public_key:pem_decode(PriKey),
RSAPriKey = public_key:pem_entry_decode(Entry),
SignBin = public_key:sign(Content, sha256, RSAPriKey, [{rsa_padding, rsa_pkcs1_padding}]),
Sign = base64:encode(SignBin),
Sign.
-spec rsa_sha256_verify(Content :: binary(), Base64Sign :: binary(), PubKey :: binary()) -> boolean().
rsa_sha256_verify(Content, Base64Sign, PubKey) ->
%% 将签名的base64编码解码
Sign = base64:decode(Base64Sign),
%% 获取RSA public key
[Entry] = public_key:pem_decode(PubKey),
RSAPubKey = public_key:pem_entry_decode(Entry),
%% 验证签名
public_key:verify(Content, sha256, Sign, RSAPubKey).
test() ->
BaseBin = <<"666">>,
PriKey = <<"-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQDs0oq2/PDjGQBFt2mLjsnFIJwYU84phN/4bg2VM7GS5OWomEbtLAOvLeNB1kXzd2uT1itgVVuX6z9IkhOeucFP2cImquhRWkUNBSznfar8u+JJpQP9e+o9SXkpYEzjHcbyShacXPR5FvDiohYzZMAPqT0KMTKkWyj1I9GU3SfyLwIDAQABAoGBAIRIKmGCMg+4BFXs2FCy5nNs/qP8E9lPNkevOXkQ0eyKXNnqjRunjTtJt3or9RDEsNt4MuxxYWMfbU7dAYaUnawojVQGzOyvejq0Pu+27bvPAazHB/8TDhS7bNtIWvOTNw1+DXN3V/LH1wEihEjRVJRfPvOVy9RgAG7suz3ncWoBAkEA+etAAlFmbxS3PryF4Ce9dYcuVo6Mj5rpbjGWitCa5tw231jH5PZtUZGipwlcJRfsy8EAK0s+CzfzOJNBlbxvLwJBAPKVtp8SdoyQf0wk+x3uwWRf0lPYWFzUT8wF9yZd/rqUmVMKvphuUFybxOy5o/E34ipS0opxbiHAsSdAPKwT7QECQF5ojOyTPWPW6oYrh1MvD/X20/1kqhqRhX7YAqt7tBhjteLXUePfZ1p57ny1H3bvu8cYqGyyZsSsJRgJIKxk24cCQBdBqSdo8rqZI8seBIEjIaFI2nY1WItVw2yw6bfg7QngMy7V6d3dPZETUfbL+V6n1+Ps2shxBXjw60rzCp4IrwECQGPc7nmSnp44MAfb7pKaMZz92brjql18xoHeyPCDZ+YeP0NmxPJQ8jOg5xOVFENwfhj1m9m5XzYO3fLXbe357So=\n-----END RSA PRIVATE KEY-----">>,
PubKey = <<"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDs0oq2/PDjGQBFt2mLjsnFIJwYU84phN/4bg2VM7GS5OWomEbtLAOvLeNB1kXzd2uT1itgVVuX6z9IkhOeucFP2cImquhRWkUNBSznfar8u+JJpQP9e+o9SXkpYEzjHcbyShacXPR5FvDiohYzZMAPqT0KMTKkWyj1I9GU3SfyLwIDAQAB\n-----END PUBLIC KEY-----">>,
Sign = rsa_sha256_sign(BaseBin, PriKey),
rsa_sha256_verify(BaseBin, Sign, PubKey).
来源:https://blog.csdn.net/weixin_38278878/article/details/98882608