【问题标题】:python RSA encrypt differs from JSEncrypt?python RSA加密与JSEncrypt不同?
【发布时间】:2017-12-29 09:18:14
【问题描述】:

我正在使用 python 编写爬虫。该网站使用 JSEncrypt 加密密码。 JS代码如下:

var pubkey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDB3Xn/+WP5OVbA8hCj3zuTlqAJ+CVt5UPHi1TYTbsBzEZ0W0+tgn9YElA9hNIi5ElFTicpGCYW4w+B2zmniSLKy3sqItT1wNCt6zGJ7lkUCkhLSIY4mp9Tqs8hn01/3HNnqDRBPhFcmA99Vy+SOoTUvCOUMiGp4ENruyxkvEp5vwIDAQAB"
var encrypt = new JSEncrypt();
encrypt.setKey(pubkey)
encrypt.encrypt("123")

我的python代码是:

from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
import base64
pubkey = '''-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDB3Xn/+WP5OVbA8hCj3zuTlqAJ
+CVt5UPHi1TYTbsBzEZ0W0+tgn9YElA9hNIi5ElFTicpGCYW4w+B2zmniSLKy3sq
ItT1wNCt6zGJ7lkUCkhLSIY4mp9Tqs8hn01/3HNnqDRBPhFcmA99Vy+SOoTUvCOU
MiGp4ENruyxkvEp5vwIDAQAB
-----END PUBLIC KEY-----'''
rsa_key = RSA.importKey(pubkey)
cipher = PKCS1_v1_5.new(rsa_key)
print base64.b64encode(cipher.encrypt("123"))

但是他们的结果是不同的。另外,我发现这些代码每次调用都会产生不同的加密输出。相同的key和明文,rsa算法不应该返回相同的输出吗?

【问题讨论】:

标签: python encryption rsa jsencrypt


【解决方案1】:

尝试运行 JSEncrypt 两次,输出是否相同?

理论上,每次的输出都应该不同。

https://stackoverflow.com/a/16329374

【讨论】:

  • 一种验证方法是您应该能够使用正确的私钥解密数据。
【解决方案2】:

不要专注于比较结果不会一样,每次运行加密都会不同。像这样修改,如果结果不一样应该是工作事件,

print base64.b64encode(cipher.encrypt(b'123')).decode()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多