我正在尝试使用混合加密js在javascript中使用Wix Velo进行加密, 使用PKCS1_v1_5使用python进行解密,得到的长度错误不正确
这是我的Javascript代码:
var Crypt = require('hybrid-crypto-js').Crypt;
var crypt = new Crypt();
var publicKey = "publicKey";
var privateKey = "privateKey";
var message = 'Hello world!';
// Encryption with one public RSA key
var encrypted = crypt.encrypt(publicKey, message);
在python中:
def decrypt_rsa(data: bytes, key: str = rsa_key) -> str:
key = key.replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("-----END RSA PRIVATE KEY-----",
"").replace("\n", "")
key = b64decode(key)
key = RSA.importKey(key)
cipher = PKCS1_v1_5.new(key)
return cipher.decrypt(data, "Error while decrypting".encode('utf-8')).decode('utf-8')
解释这一点最简单的方法是用一个例子。以下密钥对用于示例:
出于空间原因,使用1024位密钥。但是,请注意,出于安全原因,目前在实践中必须使用大小至少为2048位的RSA密钥
使用此密钥对发布的JavaScript代码的一个可能输出是:
第一个元素是版本,第二个元素是IV,第三个元素是使用RSA/OAEP加密的AES密钥,第四个元素是使用AES-256/CBC,s加密的密文Hybrid Crypto JS
要解密密钥,可以使用发布的Python/PyCryptodome代码,将填充从PKCS#1 v1.5更改为OAEP,并使用上述RSA密钥和密文:
现在可以解密实际的密文:
请注意,IV的长度为32个字节,其中只有前16个字节(对应于AES块大小)用于AES
完整性:JavaScript代码密文中使用的指纹
e7:de...17:f8
是PKCS#1格式的公钥的SHA1散列,DER编码相关问题 更多 >
编程相关推荐