水木社区手机版
首页
|版面-Python的自由天空(Python)|
新版wap站已上线
返回
1/1
|
转到
主题:用Crypto库rsa.sign生成的签名和openssl库生成的不一样
楼主
|
BA43B09F0725
|
2021-05-07 14:40:58
|
只看此ID
请教一下怎么回事?谢谢了。
python用的是Crypto
c用的是openssl
同一个字符串,两段代码算出来的签名不一样,网上搜索说可能是 padding不一样造成的,但也没找到具体的问题。
总不能python签名,别的语言验签就验不了吧?
python:
def get_sign(message, private_key):
with open("client-private.pem") as f:
key = f.read()
private_key = RSA.importKey(key)
rsa = PKCS1_v1_5.new(private_key)
rsa_message = rsa.sign(SHA.new(data=message)) # 生成签名
rsa_message = binascii.hexlify(rsa_message)
return rsa_message
c:
unsigned __int8 *__fastcall private_key_encrypt(RSA *key, unsigned __int8 *data, int len, int *decrypt_len)
{
int *v4; // r14
unsigned int v5; // er12
int v6; // eax
unsigned __int8 *v7; // rbx
v4 = decrypt_len;
v5 = len;
v6 = 256;//RSA_size();
v7 = (unsigned __int8 *)malloc(v6);
*v4 = RSA_private_encrypt(v5, data, v7, key, 1LL);
return v7;
}
--
FROM 223.104.244.*
1楼
|
hgoldfish
|
2021-05-07 15:58:50
|
只看此ID
private_key_encrypt() 和 RSA_sign() 不一样。
对于 openssl,正确的使用姿势是 EVP_DigestSignInit(), EVP_DigestSignUpdate() 这一系列的函数:
https://github.com/hgoldfish/qtnetworkng/blob/master/src/pkey.cpp#L182
【 在 BA43B09F0725 (早睡不早起) 的大作中提到: 】
: 请教一下怎么回事?谢谢了。
: python用的是Crypto
: c用的是openssl
: ...................
--
修改:hgoldfish FROM 110.85.22.*
FROM 110.85.22.*
2楼
|
BA43B09F0725
|
2021-05-07 16:35:29
|
只看此ID
谢谢,
请问对应private_key_encrypt() 的python函数是什么?
我原来程序是用private_key_encrypt()签名的,我想改成python的代码。
【 在 hgoldfish 的大作中提到: 】
: private_key_encrypt() 和 RSA_sign() 不一样。
: 对于 openssl,正确的使用姿势是 EVP_DigestSignInit(), EVP_DigestSignUpdate() 这一系列的函数:
:
https://github.com/hgoldfish/qtnetworkng/blob/master/src/pkey.cpp#L182
: ...................
--
FROM 223.104.244.*
3楼
|
xyz3d
|
2021-05-18 18:12:32
|
只看此ID
Crypto模块如果不是记错的话应该没有维护很久了。我没用过这个比较老旧的,建议你试试cryptograhy模块,更正式。
【 在 BA43B09F0725 的大作中提到: 】
: 谢谢,
: 请问对应private_key_encrypt() 的python函数是什么?
: 我原来程序是用private_key_encrypt()签名的,我想改成python的代码。
: ...................
--
FROM 85.76.73.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版