问题
Yubo Mao · 四月 22, 2021

使用$SYSTEM.Encryption.SHA1Hash()加密string与网络方法不一致

在ensemble使用$SYSTEM.Encryption.SHA1Hash()加密“ensmble”得到“t????????????m??Afù????÷??%í”,但使用网络的SHA1加密方法得到”74ba9a06cbbc92f06d9b4166f9c5b4f7f8251aed“,如何使用ensemble得到与网络上一样的加密结果

产品版本: Ensemble 2018.1
$ZV: Cache for Windows (x86-64) 2018.1 (Build 184U) Wed Sep 19 2018 09:09:22 EDT [HealthShare Modules:Core:15.032.1010 + Linkage Engine:15.032.1010]
0
0 78
讨论 (5)2
登录或注册以继续

加密后还需要base64编码

set b64encoded = $System.Encryption.Base64Encode(sha1Hash)

试过了,还是有一定差别

USER>set a="ensmble"
 
USER>set sha1=$SYSTEM.Encryption.SHA1Hash(a)
 
USER>set b64=$SYSTEM.Encryption.Base64Encode(sha1)
 
USER>w b64
dLqaBsu8kvBtm0Fm+cW09/glGu0=

SAMPLES>s x=$system.Encryption.SHA1Hash("ensmble")
 
SAMPLES>s hashs="" f i=1:1:$l(x) s hashs=hashs_$zh(+$a($e(x,i)))
 
SAMPLES>w hashs
74BA9A6CBBC92F06D9B4166F9C5B4F7F8251AED

使用您的方法后,对于部分串加密后是正常的,但是有的串加密后的结果回出现缺少字符“0”的情况,比如对“account=1001j5&ts=20210422144745&secret=secret”加密后ensmble的结果为:“b12536b16cc3bf3c36d2aa2a5c2194b85ddc0”,其他sha1的结果为:“b12536b16cc3bf3c36d2aa2a05c20194b805ddc0”;请问是与特殊字符有关吗,该如何处理

有个问题,AES/ECB/PKCS5Padding的方式,我们应该如何应用?