首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rijndael-128 cbc javascript不能像php mcrypt那样正确返回

rijndael-128 cbc是一种对称加密算法,它使用128位的密钥对数据进行加密和解密。它采用CBC(Cipher Block Chaining)模式,这意味着每个明文块在加密之前都会与前一个密文块进行异或运算,增加了加密的安全性。

在PHP中,可以使用mcrypt扩展来实现rijndael-128 cbc加密算法,并且能够正确返回加密结果。然而,在JavaScript中,并没有内置的rijndael-128 cbc加密算法实现。因此,如果想要在JavaScript中实现与PHP mcrypt相同的加密结果,需要使用第三方库或者自己实现相应的算法。

推荐使用CryptoJS这个流行的JavaScript加密库来实现rijndael-128 cbc加密算法。CryptoJS提供了丰富的加密算法和工具函数,可以方便地进行加密和解密操作。

以下是使用CryptoJS实现rijndael-128 cbc加密算法的示例代码:

代码语言:txt
复制
// 导入CryptoJS库
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>

// 定义密钥和初始向量
var key = CryptoJS.enc.Hex.parse('0123456789abcdef0123456789abcdef');
var iv = CryptoJS.enc.Hex.parse('abcdef9876543210abcdef9876543210');

// 定义明文
var plaintext = 'Hello, World!';

// 进行加密
var ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
  iv: iv,
  mode: CryptoJS.mode.CBC,
  padding: CryptoJS.pad.Pkcs7
});

// 输出加密结果
console.log(ciphertext.toString());

在上述代码中,我们使用CryptoJS库的AES模块来实现rijndael-128 cbc加密算法。首先,我们需要定义密钥和初始向量,然后使用CryptoJS.AES.encrypt方法进行加密,最后将加密结果输出到控制台。

需要注意的是,CryptoJS库使用的密钥和初始向量需要使用CryptoJS.enc.Hex.parse方法进行解析,确保其格式正确。

此外,对于其他编程语言或平台,也可以根据rijndael-128 cbc算法的规范自行实现相应的加密算法。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP 迁移 Mcrypt 至 OpenSSL 加密算法详解

在一些场景下,我们不能保证两套通信系统都使用了相函数簇去实现加密算法,可能 siteA 使用了最新的 OpenSSL 来实现了 AES 加密,但作为第三方服务的 siteB 可能仍在使用 Mcrypt...$cipher_list = mcrypt_list_algorithms(); print_r($cipher_list); // 加密算法名称 对应的 常量标识 // 'rijndael-128...,即如果你同其他系统通信(java/.net),使用 MCRYPT_RIJNDAEL_192/256 可能无法被其他严格按照 AES-192/256 标准的系统正确的数据解密。...php /** * MCRYPT_RIJNDAEL_128 & CBC + 16位Key + 16位iv = openssl_encrypt(AES-128-CBC, 16位Key, 16位iv) =...PHP_EOL; // 需对待处理的数据做 NUL("\0") 填充,且返回的数据被 base64_encode 编码了 var_dump($data = base64_decode(openssl_encrypt

1.6K21

PHP之AES加密算法

各种语言实现示例 PHP 示例: PHP使用Mcrypt扩展 这里还是使用上文的Crypt类。 使用ECB + Pkcs7。和其它语言联调的时候需要注意加密key已经过处理、加密向量默认值的设置。...PHP版的SDK 只要把DES改为AES即可,ECB改为CBC,块大小改为16。 ECB模式没有用到向量。本例为CBC,加密结果不变。但是加密向量则不一样了。...最终的一点是偏移量的问题,一定要调用pkcs5_unpad方法去除因为偏移量请求后,返回的前后都有乱码的问题,重点是调试去除返回数值{}前后的代码,一定记住你传递的偏移量和这个方法里的偏移量要一致,不然会有乱码去除不完整...加密结果和PHP是一致的。 服务端/客户端加密选型 DES/CBC/PKCS7Padding 此时加密块大小都是8字节,PKCS5和PKCS7效果一样。...PHP里通过启用 Mcrypt 扩展即可使用(mcrypt_开头的系列函数)。

3.8K30

PHP OpenSSL扩展 – 对称加密

PHP 在进入7.x 时代后,默认就不再附带 mcrypt 扩展,mcrypt 将被 openssl_* 一族函数所替代。...其实PHP的OpenSSL扩展支持很多种加密算法,想知道所有对称加密算法名称列表,可以调用 openssl_get_cipher_methods() 函数,这会返回一个数组: array( 0 =>...200 => 'seed-ofb', ) 你会发现函数返回将近200种加密算法,实际上没有这么多,许多只是因为大小写不同而重复了,比如 AES-128-CBC 和 aes-128-cbc 实际上是同一种加密算法...-ECB'); // 0 比如 AES-256-CBC 需要16位的 IV、 BC-CBC 需要 8 位的 IV、而AES-128-ECB 不需要 IV,所以返回了 0。...() ),不能人为设定 每次加密都应该重新生成一次 IV ,不可偷懒多次加密采用相同 IV IV 要随着密文一起保存(不然就没法解密了啦),可以直接附在密文串后面,也可以分开保存 发布者:全栈程序员栈长

1.8K20

PHP7带来了哪些重大的变革,你知道吗?

如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。 //原写法 $username = isset($_GET['user]) ? ...sybase\_ct 2.废弃的特性 不能使用同名的构造函数 实例方法不能用静态方法的方式调用 3.废弃的函数 方法调用  call_user_method()  call_user_method_array...() 应该采用call\_user\_func() 和 call\_user\_func\_array() 加密相关函数 mcrypt_generic_end()  mcrypt_ecb()  mcrypt_cbc...()  mcrypt_cfb()  mcrypt_ofb() 注意: PHP7.1 以后mcrypt\_*序列函数都将被移除。...$arr = [1,2,3]; foreach ($arr as &$val) {     echo current($arr);// php7 全返回0 } 按照值进行循环的时候, foreach是对该数组的拷贝操作

1.1K20

PHP7.2有哪些新特性?

我们知道php被称为“世界最好的语言“,可见人们对其是又爱又恨。我是其中一位开发者,但我对php是绝对地喜爱。我对php 了如指掌。自从php7.2发布以来,我更加喜欢这门语言。...libsodium库现在正式作为PHP核心的扩展。我一直在等待这样的一段时间了。 Mcrypt被取消 mcrypt密码库扩展已正式取消。...PHP的开发小组说,mcrypt大大抑制PHP语言的发展,越来越“老软件。” 对SSL / TLS(安全套接字层/传输层安全)常数进行了改进。...PHP7.2在调用count()函数时,它接收一个参数为一个标量函数,如果参数为空,或者一个对象,将返回未实现接口的警告信息。...关于对象类型声明修复的情况,以前开发者不能声明一个函数需要传递一个对象作为参数或声明一个函数应该返回一个对象。PHP7.2可以使用object作为一个参数类型和返回类型声明。

1.7K90

L-ctf2016 Writeup

事实上,那个被waf拦截的返回是在查询之后的,所以即便他waf拦截了返回,我们仍然可以用时间盲注来跑数据,sqlmap跑一会儿就出来了 payload: http://web.l-ctf.com:6699...具体分析贴个队友的博客吧 http://lazysheep.cc/2016/09/13/0x22/ 实话说不知道怎么解释,贴上getshell后拿到的源码吧 index.php 这是一个后门(不过好像不能直接用啊...-->xdctfxdnum=2015auid=4;xdctfxdctf"; $en_Result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$Key, $v, MCRYPT_MODE_CBC...(MCRYPT_RIJNDAEL_128,$Key, $en_Data, MCRYPT_MODE_CBC, $iv); $b = array(); $b = isset($_COOKIE[user])...> 懂的人看一眼就能明白,cbc字节反转攻击,原理就不多说了,之前三个白帽遇到过,hctf2015也曾经出过 核心在这里 $num1 = substr($b,strpos($b,"uid")+4,1)

35020

PHP密码散列算法的学习

然而加密出来的数据并不是 md5() 之类的是一个 16进制 字符串呀。...是的,password_hash() 加密出来的内容并不是 md5 类型的 Hash 串,而是类似于 JWT 一样的一套加密字符串。...就像前面说的那样,这个加密后的字符串本身已经包含了盐值信息,而且这个盐值信息是系统随机生成的,只能使用对应的比较函数才能比较原始明文密码和加密后的密码是否一致,这样就能让系统的安全性提高很多。...提供给我们的用于比对当前加密串的内容是否和我们所提供的算法和选项一致,如果是一致的返回的是 false ,如果不一致,返回的是 true 。...但是 password_hash() 这种就不行了,因为它的 salt 是随机的,也不需要我们去保存,所以即使是相同的字符串,我们也不能保证每次加密的结果是一样的,那么就要使用系统为我们提供的验证函数了

1.3K10

当爬虫工程师遇到 CTF丨B 站 1024 安全攻防题解

bbb.bb.bjd.bhc,bbb.bb.bjd.bhf,bfh.ff.dj.bcf,bfh.ff.dj.bd,bfh.ff.dj.fb,bfh.ff.dj.ig,bfh.ff.dj.jf,cd.baf.cae.cbc...是世界上最好的语言,给了个 eval.php,如图所示: [05.png] 本题解题思路来源于网安大佬,下载 eval.php,可以看到正则 /^\w+$/,这个可以用结尾接换行符匹配,然后就可以换行用...user_name": "3" } ], "total": 1 }, "msg": "" } 获取 flag 表的字段,由于不能引号所以用十六进制绕过...,正确就输出 bilibili- ( ゜- ゜)つロ 乾杯~,不是很复杂,可以使用 Java 复现,也可以使用 Python 逆向倒推正确的账号密码,使用 Python 复现的时候要注意,给出的正确账号密码是...--- 总结 部分题目比较简单,只不过没有提示,第一题就需要熟练掌握各种加密算法才能很快推断出加密方式,否则只能一个一个去试了,剩下的题就需要一定的网络安全知识了,各位爬虫大佬们也可以去试试。

57460

Kali Linux Web 渗透测试秘籍 第四章 漏洞发现

4.2 使用 Tamper Data 插件拦截或修改请求 有时候,应用拥有客户端的输入校验机制,它们通过 JavaScript,隐藏表单或者 POST 数据,并不能直接在地址栏中了解或看到。...但是,它也有一些限制,例如不能编辑 URL 或 GET 参数。...我们将该请求转换为恶意请求,并把它发给服务器,这使它不能正确处理,并返回错误。...将参数的引用替换为它的值,我们能得到: $query = "SELECT * FROM users WHERE id='"."1". "'"; 所以,当我们发送恶意输入,就像之前那样,代码行会由 PHP...更多 就像PHPSESSID是 PHP 会话 Cookie 的默认名称那样,其它平台也拥有名称,例如: ASP.NET_SessionId是 ASP.NET 会话 Cookie 的名称。

75120

如何在Ubuntu 16.04上安装和保护phpMyAdmin

介绍 虽然许多用户需要MySQL这样的数据库管理系统的功能,但他们可能不会仅仅通过MySQL提示与系统进行交互。 您可以创建phpMyAdmin,以便用户可以通过Web界面与MySQL进行交互。...最后,使用phpMyAdmin这样的软件时有一些重要的安全注意事项,因为它: 直接与MySQL安装通信 使用MySQL凭据处理身份验证 执行并返回任意SQL查询的结果 由于这些原因,并且因为它是一个广泛部署的...PHP应用程序,经常以攻击为目标,所以不应该通过普通的HTTP连接在远程系统上运行phpMyAdmin。...php-gettext 这将询问您一些问题,以便正确配置您的安装。...我们唯一需要做的是显式启用PHP mcrypt和mbstring扩展,我们可以通过输入以下命令来执行: sudo phpenmod mcrypt sudo phpenmod mbstring 之后,您需要重新启动

1.2K20
领券