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

织梦做淘宝客网站seo关键词词库

织梦做淘宝客网站,seo关键词词库,百度h5下载,wordpress 帝国 哪个好Node.js环境安装 sodium-native (其他库可能会出现加密解密失败,如果要使用不一样的库,请自行验证) npm install sodium-native 示例代码,使用的是 sodium-native v4.3.2 (其他版本可能会有变化,如果要使用,请自行验…

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里,无论是key,nonce,还是加密后的密文,都是十进制数组(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 = b"Hello, 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端的key,nonce,和密文,都是字节串bytes,调用方法时,也是传入的字节串参数。而javascript里则是十进制数组,调用方法时,也是传入的十进制数组参数(Uint8Array,对应typescript的Buffer)。

所以,python的密文在javascript端解密,javascript的密文在python端解密,是不能直接用对方的key,nonce,和密文的。

我们需要将字节串bytes和Unit8Array进行相互转换

从python端到javascript:

#在python端转换为十进制数组
decimal_array = [byte for byte in ciphertext]#key,nonce同理#结果:[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/467685/

相关文章:

  • 学校校园网站建设实施方案精准营销的案例
  • 腾讯云服务器可以做网站可以推广发广告的app
  • seo外链友情链接网站运营推广选择乐云seo
  • 做网站 要学 什么语言网站优化公司
  • 天乐测绘网做网站吗搜索引擎广告图片
  • 湖南营销型网站建设多少钱百度关键词优化软件网站
  • 怎样给网站做关键词优化百度词条
  • 做网站哪个平台搭建网站需要什么技术
  • 做gif图的网站简述网络营销的主要方法
  • 做图网站被告seo视频网页入口网站推广
  • 做的网站底部应该标注什么意思免费文案素材网站
  • 企业网站搜索引擎拓客农夫山泉软文300字
  • 青岛黄岛区网站开发武汉seo优化
  • 东莞做网站企业铭会员制营销
  • 做网站设计工资多少钱优化教程网官网
  • 计算机网站建设与维护百度关键词统计
  • wordpress网站实现微信登录google google
  • 网站建设 零基础网站关键词如何优化
  • 如何撤销网站上信息app网站
  • 单页式网站系统每日新闻摘要30条
  • 网站开发公司 广告词优化方案电子版
  • 做便民工具网站怎么样关键词挖掘站长工具
  • 纺织面料做哪个网站好百度站长资源
  • 菏泽网站建设哪好怎样做平台推广
  • 网上有做logo的网站吗网络营销的核心是什么
  • 自建网站怎么做推广微信营销策略
  • 跳网站查询的二维码怎么做的关键词排名点击软件网站
  • 兼容手机的网站百度怎么推广自己的视频
  • 宝安中心医院入职体检跟我学seo
  • 企业网站后端模板石家庄疫情最新情况