php AES加密兼容net
这几天做一个php aes加密然后到.net解密的程序,做了pkcs7的补码,密文到.net后仍然解密失败,提示填充无效,无法被移除,通过检查程序,原来是加密向量写错了。在.net中加密向量的格式为数组,在php中应转为带斜杠的字符串,我在转换是多删掉了一个0。下面看程序,设置自己的key和iv后就可以使用这些程序。
class AESMcrypt{ /** * 设置默认的加密key 32位 * @var str * 为了保密省略后半部分 */ private static $defaultKey = "1A426B316FB648..........."; /** * 设置默认加密向量 * @var str * 为了保密省略后半部分 */ //在.net中的格式为 //$iv='{ 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF............}'; private $iv = "\x12\x34\x56\x78\x90\xAB\xCD\xEF\..........."; /** * 设置加密算法 * @var str */ private $cipher; /** * 设置加密模式 * @var str */ private $mode; public function __construct($cipher = MCRYPT_RIJNDAEL_128, $mode = MCRYPT_MODE_CBC){ $this->cipher = $cipher; $this->mode = $mode; } /** * 对内容加密,注意此加密方法中先对内容使用padding pkcs7,然后再加密。 * @param str $content 需要加密的内容 * @return str 加密后的密文 */ public function encrypt($content){ if(empty($content)){ return null; } $srcdata = $this->addPkcs7Padding($content); return mcrypt_encrypt($this->cipher, $this->getSecretKey(), $srcdata, $this->mode, $this->iv); } /** * pkcs7补码 * * @param string $string 明文 * * @return String */ function addPkcs7Padding($string) { $blocksize = mcrypt_get_block_size($this->cipher, $this->mode); $len = strlen($string); //取得字符串长度 $pad = $blocksize - ($len % $blocksize); //取得补码的长度 $string .= str_repeat(chr($pad), $pad); //用ASCII码为补码长度的字符, 补足最后一段 return $string; } /** * 对内容解密,注意此加密方法中先对内容解密。再对解密的内容使用padding pkcs7去除特殊字符。 * @param String $content 需要解密的内容 * @return String 解密后的内容 */ public function decrypt($content){ if(empty($content)){ return null; } $content = mcrypt_decrypt($this->cipher, $this->getSecretKey(), $content, $this->mode, $this->iv); //$block = mcrypt_get_block_size($this->cipher, $this->mode); $pad = ord($content[($len = strlen($content)) - 1]); return substr($content, 0, strlen($content) - $pad); } public function getSecretKey() { return self::$defaultKey; } }
以上就介绍了php AES加密兼容net,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用Java的String.valueOf()函数将基本数据类型转换为字符串在Java开发中,当我们需要将基本数据类型转换为字符串时,一种常见的方法是使用String类的valueOf()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

char数组转string的方法:可以通过赋值来实现,使用{char a[]=" abc d\0efg ";string s=a;}语法,让char数组对string直接赋值,执行代码即可完成转换。

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

使用Java的String.replace()函数替换字符串中的字符(串)在Java中,字符串是不可变的对象,这意味着一旦创建了一个字符串对象,就无法修改它的值。但是,你可能会遇到需要替换字符串中的某些字符或者字符串的情况。这时候,我们可以使用Java的String类中的replace()方法来实现字符串的替换。String类的replace()方法有两种重

大家好,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端开发用的最多的类,所以,很有必要好好来聊聊它。

String中split方法使用String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组。1、一般用法用一般的字符,例如@或,等符号做分隔符时:Stringaddress="上海@上海市@闵行区@吴中路";String[]splitAddr=address.split("@");System.out.println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3

使用Java的String.length()函数获取字符串的长度在Java编程中,字符串是一种非常常见的数据类型,我们经常需要获取字符串的长度,即字符串中字符的个数。在Java中,我们可以使用String类的length()函数来获取字符串的长度。下面是一个简单的示例代码:publicclassStringLengthExample{publ
