gpt4 book ai didi

encoding - 在 python 和 javascript 中生成 SHA256 哈希导致不同的结果

转载 作者:行者123 更新时间:2023-12-04 02:21:57 26 4
gpt4 key购买 nike

我在加密明文时遇到问题。

我在 Python 中做什么:

def encrypt(plaintext):
import hashlib, base64

hashed = hashlib.sha256(plaintext).digest()
return base64.b64encode(hashed)

def main():
input_value = "a"
output = encrypt(plaintext=input_value)
print output

if __name__ == "__main__":
main()

在 Python 中的结果:
ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs=

我在 JS 中做什么:

var result = '';
var plaintext = 'a';

if(plaintext != null && plaintext != undefined) {
var hashed = CryptoJS.SHA256(plaintext);
result = hashed.toString(CryptoJS.Base64);
}

alert(result);

结果在 JS:
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

有谁知道我做错了什么?

或者有没有办法在两种语言中获得相同的加密结果?

顺便说一句:更改 python 代码对我来说会更容易,因为我的数据库中已经有 CryptoJS 加密的值。

最佳答案

CryptoJS 大多不会抛出错误。你路过 undefined进入 hashed.toString(CryptoJS.Base64); .使用 CryptoJS.enc.Base64 , 因为 CryptoJS.enc.Hex默认使用。

但是由于您更喜欢更改python,我建议您进行散列this way :

def encrypt(plaintext):
import hashlib, base64
return hashlib.sha256(plaintext).hexdigest()

当 CryptoJS 更改默认行为时,您仍应将 JavaScript 代码更改为十六进制编码。

关于encoding - 在 python 和 javascript 中生成 SHA256 哈希导致不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com