当前位置: 首页 > news >正文

案例展示网站深圳网站建设列表网

案例展示网站,深圳网站建设列表网,wordpress 获取分类描述,wordpress中文版切换Node.js环境安装 sodium-native (其他库可能会出现加密解密失败#xff0c;如果要使用不一样的库#xff0c;请自行验证) npm install sodium-native 示例代码#xff0c;使用的是 sodium-native v4.3.2 (其他版本可能会有变化#xff0c;如果要使用#xff0c;请自行验…Node.js环境安装 sodium-native (其他库可能会出现加密解密失败如果要使用不一样的库请自行验证) npm install sodium-native 示例代码使用的是 sodium-native v4.3.2 (其他版本可能会有变化如果要使用请自行验证) const sodium require(sodium-native);(async () {await sodium.ready;// 1. 要加密的消息const message Hello, world!;try {// 2. 将消息转换为 Uint8Arrayconst messageBytes new TextEncoder().encode(message);// 生成随机的密钥和 nonceconst key new Uint8Array(sodium.crypto_aead_xchacha20poly1305_ietf_KEYBYTES); /* 创建一个 32 字节的空Uint8Array : [0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0 ]*/const nonce new Uint8Array(sodium.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES); /* 创建一个 24 字节的空Uint8Array: [0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0 ] */#实际开发中key和nonce会指定否则影响加密解密sodium.randombytes_buf(key); // 填充随机数据到 keysodium.randombytes_buf(nonce); // 填充随机数据到 nonceconsole.log(随机生成的密钥, key);console.log(随机生成的 nonce, nonce);// 创建一个足够大的缓冲区来存储加密后的数据和认证标签const ciphertext new Uint8Array(messageBytes.length sodium.crypto_aead_xchacha20poly1305_ietf_ABYTES);// 创建一个足够大的缓冲区来存储解密后的数据不包括认证标签const decrypted new Uint8Array(ciphertext.length - sodium.crypto_aead_xchacha20poly1305_ietf_ABYTES);const additionalData new Uint8Array(); // 可以为空或者包含额外的认证数据// 3. 加密sodium.crypto_aead_xchacha20poly1305_ietf_encrypt(ciphertext, // 加密后的缓冲区messageBytes, // 将消息转换为 Uint8ArrayadditionalData, // 附加数据可选null, // 附加数据的 nonce可选nonce, // 随机生成的 noncekey // 随机生成的密钥);// 输出加密相关信息console.log(加密后的密文, ciphertext);// 4. 解密sodium.crypto_aead_xchacha20poly1305_ietf_decrypt(decrypted, // 解密后的缓冲区null, // 不需要预先分配空间ciphertext, // 密文additionalData, // 附加数据可选nonce, // 随机生成的 noncekey // 随机生成的密钥);if (decrypted) {// 解密成功const decryptedMessage new TextDecoder().decode(decrypted);console.log(解密后的消息, decryptedMessage);} else {console.log(解密失败);}} catch (error) {console.error(加密或解密过程中发生错误, error);} })();加密解密正确可用输出结果 我们可以看到在javascript里无论是keynonce还是加密后的密文都是十进制数组(Uint8Array)对应是typescript的Buffer类这点我们可以通过查看加密方法的定义 然而在实际开发中我们很多时候需要前端和后端进行密文的互相解密加密这里有一些需要注意的地方。 以python为例python实现加密解密的方法 pip install pynacl import nacl.bindings from nacl.utils import random import nacl.secretkey random(nacl.bindings.crypto_aead_xchacha20poly1305_ietf_KEYBYTES) #也可以是读取key文件获得key比较常见的做法 # with open(/keyfile/key.cas-ie-key,rb) as file: # key file.read() decimal_array [byte for byte in key] print(随机生成的Key:, key) nonce random(nacl.bindings.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES) #实际开发中key和nonce会指定否则影响加密解密 print(随机生成的nonce:, nonce)message bHello, world!ciphertext nacl.bindings.crypto_aead_xchacha20poly1305_ietf_encrypt(message, None, nonce, key) print(加密后的密文:,ciphertext) print(解密后的明文:, nacl.bindings.crypto_aead_xchacha20poly1305_ietf_decrypt(ciphertext, None, nonce, key))得到结果: 可以看到python端的keynonce和密文都是字节串bytes调用方法时也是传入的字节串参数。而javascript里则是十进制数组调用方法时也是传入的十进制数组参数(Uint8Array对应typescript的Buffer)。 所以python的密文在javascript端解密javascript的密文在python端解密是不能直接用对方的keynonce和密文的。 我们需要将字节串bytes和Unit8Array进行相互转换 从python端到javascript: #在python端转换为十进制数组 decimal_array [byte for byte in ciphertext]#keynonce同理#结果:[108, 13, 97, 116, 187, 108, 69, 252, 135, 246, 107, 42, 39, 176, 94, 232, 140, 247, 152, 2, 239, 29, 23, 172, 131, 254, 30, 77, 46]javascript端转换为Uint8Array后再传入方法里: const ciphertext new Uint8Array([108, 13, 97, 116, 187, 108, 69, 252, 135, 246, 107, 42, 39, 176, 94, 232, 140, 247, 152, 2, 239, 29, 23, 172, 131, 254, 30, 77, 46]) #key,nonce同理 从javascript到python端 #在python里直接把js的数组转换为字节串即可 #key,nonce同理 ciphertext bytes(unint8array_from_js)
http://www.hkea.cn/news/14446798/

相关文章:

  • 电商网站 开发费用贝壳房源网
  • 做网站建设销售工资高吗饰品网站模板
  • 网站建设分享文章如何设计网站logo
  • 怎么让百度搜索到自己的网站洱源网站建设
  • 自助建设分销商城网站蒙阴建设局网站
  • 网站建设商家东莞网站建设市场
  • 阿里云 网站空间个人网站一年多少钱
  • 昆明做整站优化提供石家庄网站推广
  • 常见的站内推广方式有哪几种室内设计公司排名全球
  • 网站后台功能技术要求深圳东门老街有什么好玩的
  • 网站免费正能量小说计算机毕设网站代做
  • 建立网站主页注意那些方面改进网站建设英文作文
  • 自助微信网站设计免费做网站广告
  • 丽江网站开发网站开发工具有组合
  • 网站配色原则wordpress播放网盘视频
  • 一个合格的网站设计境外网站icp备案申请表
  • 零食网站模板下载汽车零部件公司网站建设方案
  • 拉趣网站是谁做的大庆市住房与城乡建设局网站
  • 沧州网站建设微艾薇做网站服务器权限设置
  • 让人做网站需要注意什仓库管理 erp
  • 济南企业营销型网站建设价格中国徐州网
  • 一个电商网站开发要多久请简述网站建设的一般流程图
  • win7 iis网站无法显示该页面看看铜陵新闻
  • 网页设计尺寸快捷键上海全国关键词排名优化
  • 简易网站建设维护少儿编程培训
  • 桂林市做网站的公司洛阳霞光做网站
  • 南昌建设网站页游大全
  • 做网站用jsp和html毕业设计做企业门户网站
  • 化妆品网站建设推广方案营销手机网站版面
  • wordpress站点设置使用期限做定制网站