本文介绍: – 请在电脑上生成私钥和公钥, 当前最高支持4096bit, 一般来说2048bit就够用了– privkey.pem 是私钥, public.pem 是公钥— 私钥用于 加密 和 签名, 通常保密, 放在服务器端— 公钥用于 解密 和 验签, 一般可公开,放在设备端– 为了演示API使用, 这里把私钥也放在设备上– 打印结果— 下面是解密, 通常不会在设备端进行, 这里主要是演示用法, 会很慢— 读取私钥, 然后解码数据end— 演示签名和验签。
-- 请在电脑上生成私钥和公钥, 当前最高支持4096bit, 一般来说2048bit就够用了 -- openssl genrsa -out privkey.pem 2048 -- openssl rsa -in privkey.pem -pubout -out public.pem -- privkey.pem 是私钥, public.pem 是公钥 -- 私钥用于 加密 和 签名, 通常保密, 放在服务器端 -- 公钥用于 解密 和 验签, 一般可公开,放在设备端 -- 为了演示API使用, 这里把私钥也放在设备上 local res = rsa.encrypt((io.readFile("/luadb/public.pem")), "abc") -- 打印结果 log.info("rsa", "encrypt", res and #res or 0, res and res:toHex() or "") -- 下面是解密, 通常不会在设备端进行, 这里主要是演示用法, 会很慢 if res then -- 读取私钥, 然后解码数据 local dst = rsa.decrypt((io.readFile("/luadb/privkey.pem")), res, "") log.info("rsa", "decrypt", dst and #dst or 0, dst and dst:toHex() or "") end -- 演示签名和验签 local hash = crypto.sha1("1234567890"):fromHex() -- 签名通常很慢, 通常是服务器做 local sig = rsa.sign((io.readFile("/luadb/privkey.pem")), rsa.MD_SHA1, hash, "") log.info("rsa", "sign", sig and #sig or 0, sig and sig:toHex() or "") if sig then -- 验签是很快的 local ret = rsa.verify((io.readFile("/luadb/public.pem")), rsa.MD_SHA1, hash, sig) log.info("rsa", "verify", ret) end
rsa.encrypt(key, data)
RSA加密
传入值类型 |
|
---|---|
-- 下面代码中的 "abc" 是待加密数据 local res = rsa.encrypt((io.readFile("/luadb/public.pem")), "abc") -- 打印结果 log.info("rsa", "encrypt", res and #res or 0, res and res:toHex() or "")
rsa.decrypt(key, data, pwd)
RSA解密
传入值类型 |
|
---|---|
待解密数据 |
|
私钥的密码,可选 |
-- 注意, 解密通常很慢, 建议在服务器端进行 -- res 是待解密的数据 local dst = rsa.decrypt((io.readFile("/luadb/privkey.pem")), res, "") log.info("rsa", "decrypt", dst and #dst or 0, dst and dst:toHex() or "")
rsa.verify(key, md, hash, sig)
RSA验签
传入值类型 |
|
---|---|
返回值
返回值类型 |
|
---|---|
local ret = rsa.verify((io.readFile("/luadb/public.pem")), rsa.MD_SHA1, hash, sig) log.info("rsa", "verify", ret)
rsa.sign(key, md, hash, pwd)
RSA签名
参数
传入值类型 |
|
---|---|
私钥密码, 可选 |
返回值
返回值类型 |
|
---|---|
string |
成功返回sig数据, 否则返回nil |
local sig = rsa.sign((io.readFile("/luadb/privkey.pem")), rsa.MD_SHA1, hash, "") log.info("rsa", "sign", sig and #sig or 0, sig and sig:toHex() or "")
原文地址:https://blog.csdn.net/l531798151/article/details/134654348
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_21784.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。