跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一个 aes-js 库 里加密算法用 PHP 怎么写?
未分類
22 6 月 2020

一个 aes-js 库 里加密算法用 PHP 怎么写?

一个 aes-js 库 里加密算法用 PHP 怎么写?

資深大佬 : wangwenfan 65

文档地址:https://github.com/ricmoo/aes-js#readme

下面是官方文档 demo 代码

const aesjs = require('aes-js'); // An example 128-bit key var key = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ];  // The initialization vector (must be 16 bytes) var iv = [ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,35, 36 ];  // Convert text to bytes (must be a multiple of the segment size you choose below) var text = 'TextMustBeAMultipleOfSegmentSize'; var textBytes = aesjs.utils.utf8.toBytes(text);  // The segment size is optional, and defaults to 1 var segmentSize = 8; // console.log(iv); //  var aesCfb = new aesjs.ModeOfOperation.cfb(key, iv, segmentSize); // var encryptedBytes = aesCfb.encrypt(textBytes);  // To print or store the binary data, you may convert it to hex var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes); console.log(encryptedHex); // "55e3af2638c560b4fdb9d26a630733ea60197ec23deb85b1f60f71f10409ce27"  // When ready to decrypt the hex string, convert it back to bytes var encryptedBytes = aesjs.utils.hex.toBytes(encryptedHex);  // The cipher feedback mode of operation maintains internal state, // so to decrypt a new instance must be instantiated. var aesCfb = new aesjs.ModeOfOperation.cfb(key, iv, 8); var decryptedBytes = aesCfb.decrypt(encryptedBytes);  // Convert our bytes back into text var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes); console.log(decryptedText); // "TextMustBeAMultipleOfSegmentSize" 
  • 怎么改造下用 php 来写?
<?php // 加密算法 $encryptMethod = 'aes-128-cfb'; // 明文数据 $data = 'TextMustBeAMultipleOfSegmentSize'; $secret = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; // 生成 IV $ivLength = openssl_cipher_iv_length($encryptMethod); $iv = openssl_random_pseudo_bytes($ivLength, $isStrong); if (false === $iv && false === $isStrong) {  die('IV generate failed'); } // 加密 $encrypted = openssl_encrypt($data, $encryptMethod, $secret, 8, $iv);  

大佬有話說 (3)

  • 資深大佬 : zy445566

    写个锤子,用 node 起 http 服务,用 PHP 去掉用不就完事了

  • 資深大佬 : xiangyuecn

    用固定 iv、密码、填充方式 不管用什么语言同一明文 AES 加密出来都是一样的。所以不用考虑怎么改造。。。直接研究 PHP 怎么进行 AES 加密。注意:js 那里的 iv 是固定的,不能乱写。

  • 主 資深大佬 : wangwenfan

    @xiangyuecn 我有点不懂的是上面 js 的 iv 定义的是数组,看了文档 php 的 iv 一般是字符串,这两个怎么来统一

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具