问题描述
我需要帮助。我使用 AES_CBC_256 和每个包的不同密钥加密带有我们客户数据的 json 包。在生成的大约一百万个数据包中,前几十个不能解密,返回“?”随后的数据包被正确加密并且可以被正确解密。 MEMPTR 扩展了数据大小 + 1024 字节。该包首先加密,然后进行 Base64 编码。我不使用IV。 为了更好的可读性,下面的代码没有进行所有错误处理。有什么建议吗?
FUNCTION {&Modul}-encrypt RETURN CHAR(INPUT pInput AS LONGCHAR,INPUT pKey AS RAW,OUTPUT pOut AS LONGCHAR).
DEF VAR mMemPtr AS MEMPTR NO-UNDO.
FIX-CODEPAGE(pOut) = "UTF-8".
Security-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_CBC_256".
Security-POLICY:SYMMETRIC-ENCRYPTION-KEY = pkey.
SET-SIZE(mMemPtr) = LENGTH(pInput) + 1024.
mMemPtr = ENCRYPT(pInput) NO-ERROR.
pOut = BASE64-ENCODE(mMemPtr) NO-ERROR.
RETURN "OK".
END.
FUNCTION {&Modul}-decrypt RETURN LONGCHAR(INPUT pInput AS LONGCHAR,INPUT pkey AS RAW).
DEF VAR pOut AS LONGCHAR NO-UNDO.
FIX-CODEPAGE(pOut) = "UTF-8".
DEF VAR mMemPtrIn AS MEMPTR NO-UNDO.
DEF VAR mMemPtrOut AS MEMPTR NO-UNDO.
Security-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_CBC_256".
Security-POLICY:SYMMETRIC-ENCRYPTION-KEY = pkey.
mMemPtrIn = BASE64-DECODE(pInput) NO-ERROR.
mMemPtrOut = DECRYPT(mMemPtrIn) NO-ERROR.
copY-LOB FROM mMemPtrOut TO pOut CONVERT SOURCE CODEPAGE "utf-8" NO-ERROR.
SET-SIZE(mMemPtrIn) = 0.
SET-SIZE(mMemPtrOut) = 0.
RETURN pOut.
END.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)