Rumah >pembangunan bahagian belakang >tutorial php >asp用自带的RSA方法加密的密文能不能用PHP自带的RSA解密出来
现在是这样的,这边(公司A)有一个东西以前外包给公司B做了,那边用的是ASP,公司这边用的是PHP,
现在使用现在B需要,现在A生成了私钥和公钥(参考http://blog.csdn.net/clh604/article/details/20224735),提供给B公钥,请问B用asp中的rsa加密函数和这个公钥加密出来的密文,A能不能用php自带的rsa解密函数和私钥解出来
菜鸟没分,求有相关经验的大神解惑(主要是PHP和ASP中的RSA算法是不是共通的?)
现在是这样的,这边(公司A)有一个东西以前外包给公司B做了,那边用的是ASP,公司A这边用的是PHP,
现在A生成了私钥和公钥(参考http://blog.csdn.net/clh604/article/details/20224735),提供给B公钥,请问B用asp中的rsa加密函数和这个公钥加密出来的密文,A能不能用php自带的rsa解密函数和私钥解出来
菜鸟没分,求有相关经验的大神解惑(主要是PHP和ASP中的RSA算法是不是共通的?)
asp 没有提供加密算法,asp.net 提供了加密算法
如果 asp 使用的是依据加密算法摹写的,那么除非能实现到 php 的移植,一般不可用php提供的加密函数
asp 没有提供加密算法,asp.net 提供了加密算法
如果 asp 使用的是依据加密算法摹写的,那么除非能实现到 php 的移植,一般不可用php提供的加密函数
理论上是可以的,只要算法实现上是一样的
你应该给出 C# 的代码、公钥与私钥和若干组明文和密文
理论上是可以的,只要算法实现上是一样的
你应该给出 C# 的代码、公钥与私钥和若干组明文和密文
<?phpheader("Content-Type: text/html; charset=utf-8");//私钥$private_key = '-----BEGIN RSA PRIVATE KEY-----MIICWwIBAAKBgQCpQ6CMgJe7NmXHpNPFcqdX1hsZQZH5j3WN2hRdfBTG5nQH8ifS4+BVqifL0JjuffZdHJXqGQon4HD9i64cQ6Ps0kgbAMfNWsvhC+IJYAfH7hBRmB/d1J4Bucr0o+diWp+7Vmp+QS9H5n6WxvSYglySFXvn5Z5FStWZGuoO3VgIwQIDAQABAoGAXvGRJ96lvZyIwNCi/TkPxwRRFPyjvgGLZfMywzFrkhoIccCSOAgceNDGG9w5PGWpgJcdPD+pY67Qklf8ZNxIIQ/CYO+YB20dyio138jNLFTRmvUbzkK+9g1h0LF1ksbK5sfTPLplK4lKbowDK9XiuSGJThOiN5qEiiWCNMlgowECQQDfZhWxVh7jzlyUMuLvc8ZzgSdNJaH3upx8asFspvqXFpuj/GYaMuEwFfT4Mz9QTgT8zeaij/zpivTNI3bEKeYRAkEAwfcjLb75RSCUKD1d84cUcQauZmyCRymu/C4/Whxr1AO0lIUc94cUsgkdxqMnbJPca5+rQE9aDmf9cslUMj2HsQJAIh1cwq/8F52z1Y3PyfFMJOdcMRPGICaHLxi+YPE+40O4kNpCXU3XxZgUyLJKwOCpMlHfHoQOgzuNFqaLxHkBgQJAW6RcZpy4QUTnOyvjW9AShGRXueTCmMTE/DkNjZGoEH+/rfxGd1zHFmbgPp2PXultVxwVWUkkj3HqeXVN5n7TwQJAaySbpZjetKJjx33a/jbLY26OczTtAw5t4FK84x8ka29rwEuqs5+e2eanroktyeiLi8j/difKHDSWdTD+TiJqoA==-----END RSA PRIVATE KEY-----';//公钥$public_key = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpQ6CMgJe7NmXHpNPFcqdX1hsZQZH5j3WN2hRdfBTG5nQH8ifS4+BVqifL0JjuffZdHJXqGQon4HD9i64cQ6Ps0kgbAMfNWsvhC+IJYAfH7hBRmB/d1J4Bucr0o+diWp+7Vmp+QS9H5n6WxvSYglySFXvn5Z5FStWZGuoO3VgIwQIDAQAB-----END PUBLIC KEY-----';$pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id$pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的$data = "{from:jinhua,to:rayo,dongid:dasdd,dongcode:hajshh,type:4,posttime:2014-08-21}";//原始数据,明文$encrypted = "";$decrypted = "";echo "原始数据:",$data,"<BR>";echo "私钥加密:<br>";openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密$encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的echo $encrypted,"<br>";echo "公钥解密:<br>";openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来echo $decrypted,"<br>";echo "公钥加密:<br>";openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密$encrypted = base64_encode($encrypted);echo $encrypted,"<br>";echo "私钥解密:<br>";openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密echo $decrypted,"<br>";?>
结果:
你确定这样的加密可以成功吗,明文长度不会超长报错吗,我现在用了个分段加密,传到JAVA那边,返回来的密文解不开了,蛋疼