php 单点登录中 AES加密

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36431213/article/details/82593539
  • 单点登录在中的用户密码采用AES 128加密,加密模式为CBC
  • 填充模式为:PKCS5Padding(当待加密内容的不足分组长度时以最后一下字节填充)
  • 密码为16个字节,长于16个字节取前16个字节,不足时补充空字符
  • 向量IV同密码,固定为16个字节,加密后输出为全16进制字符,字符集为UTF-8

  • 明文:abc ,密码:347c6161e79f4b6a8873202dd5fe7e8c
  • 实际取前16个字节:347c6161e79f4b6a,向量IV也是 347c6161e79f4b6a
  • 加密后的密文为:7E835488F203A2FDA19F626921C8588B
<?php function strToHex($string) { $hex = ""; for ($i = 0; $i < strlen($string); $i++) { $tmp = dechex(ord($string[$i])); $hex .= strlen($tmp) == 1 ? "0" . $tmp : $tmp; } $hex = strtoupper($hex); return $hex; } function addPkcs5Padding($string, $blocksize = 16) { //取得字符串长度 $len = strlen($string); //取得补码的长度 $pad = $blocksize - ($len % $blocksize); //用ASCII码为补码长度的字符, 补足最后一段 $string .= str_repeat(chr($pad), $pad); return $string; } $data = openssl_encrypt('abc', 'aes-128-cbc', addPkcs5Padding('347c6161e79f4b6a8873202dd5fe7e8c', '128'), true, '347c6161e79f4b6a'); var_dump(strToHex($data));

猜你喜欢

转载自blog.csdn.net/qq_36431213/article/details/82593539