encryption - 使用 iv 和 PKCS7Padding 加密字符串解密 AES 256 CBC(使用 Java 加密)
问题描述
我是 LUA 和密码学的新手。我正在尝试解密使用AES 256 CBC
IV 和 PKCS7 在 Java 中加密的 Lua 中的字符串。我遇到了resty.aes
。但我无法使用它解密字符串。我越来越nil
。
这是示例示例:
CODE I TRIED IN LUA:
local aes = require "resty.aes"
local str = require "resty.string"
--- Plain text data: 'hello123uvsayb1b1'
local encryptedData = '6d6b2082fb9596a4a731b43c9e6f5d63556dfa7a30dc5d7284c82dbfa43523c8'
local key = "pIyOhraBZhkELJo1DAfWabababababab"
local aes256Cbc, err = aes:new(key, nil, aes.cipher(256, "cbc"), {iv="bd7e9fdeb5d8403c"})
if(err ~= nil) then
ngx.say("Some error occurred")
end
local decrypted_data, err = aes256Cbc:decrypt(encryptedData)
if decrypted_data == nil then
ngx.say("Decrypted data is nil")
end
输出为:解密数据为零。
我无法找出我在这里做错了什么。
解决方案
您的加密数据是十六进制编码的。您需要将其解码为原始字节字符串:
local function fromhex(str)
return (str:gsub('..', function (cc)
return string.char(tonumber(cc, 16))
end))
end
...
local encryptedData = fromhex('6d6b2082fb9596a4a731b43c9e6f5d63556dfa7a30dc5d7284c82dbfa43523c8')
...
ngx.say(decrypted_data)
返回hello123uvsayb1b1
推荐阅读
- python - Pandas - 计算项目的总数量并删除总数量小于 5 的唯一值
- excel - 键入在不同单元格中创建数值的单词
- java - Spring Boot 集成测试 - 我应该在 @ContextConfiguration 中输入什么参数
- google-chrome - 检测 Google Chrome 实时字幕
- python - 如何理解 py-spy 的分析报告?
- jwt - Quarkus:集成测试 - 如何模拟 OIDC?
- angular - RROR 错误:找不到带有路径的控件:formArray
- python - 如何使用 python 或 pyspark 获取带有年份的周数列表(此格式为 202114)
- discord.js - 错误提供的选项不是对象。在 Message.delete
- html - 页面转向 http 而不是 https 并且不加载导航栏