ホームページ >バックエンド開発 >PHPチュートリアル >ASP が独自の RSA 方式を使用して暗号化した暗号文は、PHP 独自の RSA 方式を使用して復号化できますか?
これが今です。ここ (A 社) は以前 B 社に委託していましたが、そこでは ASP を使用しており、ここでは PHP を使用しています。
現在は B 社で使用されています。 A は秘密キーと公開キーを生成し (http://blog.csdn.net/clh604/article/details/20224735 を参照)、それらを B の公開キーに提供して、ASP の rsa 暗号化機能を使用してそれらを暗号化できますか。この公開キーは、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>";?>
結果:
この暗号化は成功しますか? 平文の長さが長すぎますか? 現在、セグメント化された暗号化を使用しており、返された暗号文を復号化できません。