ホームページ > バックエンド開発 > PHPチュートリアル > ASP が独自の RSA 方式を使用して暗号化した暗号文は、PHP 独自の RSA 方式を使用して復号化できますか?

ASP が独自の RSA 方式を使用して暗号化した暗号文は、PHP 独自の RSA 方式を使用して復号化できますか?

WBOY
リリース: 2016-06-20 12:42:21
オリジナル
1298 人が閲覧しました

これが今です。ここ (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 によって提供されるものは通常使用できません


この秘密キーと公開キーは openssl によって生成されます。B は C# とこの公開キーを使用して暗号文の文字列を暗号化します。A は秘密キーと PHP を使用して暗号化を解除できますか?

アルゴリズムの実装が同じである限り、理論的にははい
C# コード、公開キーと秘密キー、および平文と暗号文のいくつかのセットを提供する必要があります

理論的には可能です。はい、アルゴリズムの実装が同じであれば可能です
C# コード、公開キーと秘密キー、および平文と暗号文のいくつかのセットを提供する必要があります



//秘密鍵
$private_key = '-----RSA 秘密鍵の開始-----
MIICWwIBAAKBgQCpQ6CMgJe7NmXHpNPFcqdX1hsZQZH5j3WN2hRdfBTG5nQH8ifS
4+BVqifL0JjuffZdHJXqGQon4HD9i64cQ6P s0kgbAMfN WsvhC+IJYAfH7hBRmB/d
1J4Bucr0o+diWp+7Vmp+QS9H5n6WxvSYglySFXvn5Z5FStWZGuoO3VgIwQIDAQAB
AoGAXvGRJ96lvZyIwNCi/TkPxwRRFPyjvgGLZfMywzFrkhoIccCSOA gceNDGG9w5
PGWpgJcdPD +pY67Qklf8ZNxIIQ/CYO+YB20dyio138jNLFTRmvUbzkK+9g1h0LF1
ksbK5sfTPLpl K4lKbowDK9XiuSGJThOiN5qEiiWCNMlgowECQQDfZhWxVh7jzlyU
MuLvc8ZzgSdNJaH3 upx8asFspvqXFpuj/GyaMuEwFfT4Mz9QTgT8zeaij/zpivTN
I3bEKeYRAkEAwfcjLb7 5RSCUKD1d84cUcQauZmyCRymu/C4/Whxr1AO0lIUc94cU
sgkdxqMnbJPca5+rQE9a Dmf9cslUMj2HsQJAIh1cwq/8F52z1Y3PyfFMJOdcMRPG
ICaHLxi+YPE+40O4kNpCXU3XxZgUyLJKwOCpMlHfHoQOgzuNFqaLxHkBgQJAW6Rc
Zpy4QUTnOyvjW9ASHGRXueTC mMTE/DkNjZGoEH+ /rfxGd1zHFmbgPp2PXultVxwV
WUkkj3Hq eXVN5n7TwQJAaySbpZjetKJjx33a/jbLY26OczTtAw5t4FK84x8ka29r
wEuqs5+e2eanroktyeiLi8j/difKHDSWdTD+TiJqoA ==
-----RSA 秘密キーの終了-----' ;
//公開鍵
$ public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpQ6CMgJe7NmXHpNPFcqdX1hsZ
QZH5j3WN2hRdfBTG5nQH8ifS4+ BVqifL0JjuffZdHJX qGQon4HD9i64cQ6Ps0kgb
AMfNWsvhC+IJYAfH7hBRmB/d1J4Bucr0o+diWp+ 7Vmp+QS9H5n6WxvSYglySFXvn
5Z5FStWZGuoO3VgIwQIDAQAB
--- --END PUBLIC KEY-----'

<?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>";?>
ログイン後にコピー

結果:

この暗号化は成功しますか? 平文の長さが長すぎますか? 現在、セグメント化された暗号化を使用しており、返された暗号文を復号化できません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート