を読み取るためPEMKeyPairの代わりAsymmetricCipherKeyPairを返す私は正常にopensslのフォーマットされた秘密鍵の読み込み機能があります。RSA - はBouncyCastle PEMReader秘密鍵
static AsymmetricKeyParameter readPrivateKey(string privateKeyFileName)
{
AsymmetricCipherKeyPair keyPair;
using (var reader = File.OpenText(privateKeyFileName))
keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();
return keyPair.Private;
}
をして、暗号化されたテキストを復号化するために使用されAsymmetricKeyParameterを返します。
以下は復号化コードです:弾む城のライブラリを使用してC#で
public static byte[] Decrypt3(byte[] data, string pemFilename)
{
string result = "";
try {
AsymmetricKeyParameter key = readPrivateKey(pemFilename);
RsaEngine e = new RsaEngine();
e.Init(false, key);
//byte[] cipheredBytes = GetBytes(encryptedMsg);
//Debug.Log (encryptedMsg);
byte[] cipheredBytes = e.ProcessBlock(data, 0, data.Length);
//result = Encoding.UTF8.GetString(cipheredBytes);
//return result;
return cipheredBytes;
} catch (Exception e) {
Debug.Log ("Exception in Decrypt3: " + e.Message);
return GetBytes(e.Message);
}
}
これらの仕事と私は正しい復号化されたテキストを取得します。しかし、これをJavaに追加すると、PEMParser.readObject()はAsymmetricCipherKeyPairの代わりにPEMKeyPair型のオブジェクトを返し、Javaはそれをキャストしようとすると例外をスローします。私はC#でチェックし、実際にAsymmetricCipherKeyPairを返しています。
Javaの動作が異なる理由はわかりませんが、ここで誰かがこのオブジェクトをキャストしたり、privatekeyファイルを読み込んで正常に復号化するのを助けてくれることを願っています。私はC#とJavaコードの両方で同じパブリックキーとプライベートキーファイルを使用したので、エラーはそれらのものではないと思います。参照のためにここに
私はのPrivateKeyを読んでいるかのJavaバージョン:
public static String readPrivateKey3(String pemFilename) throws FileNotFoundException, IOException
{
AsymmetricCipherKeyPair keyParam = null;
AsymmetricKeyParameter keyPair = null;
PEMKeyPair kp = null;
//PrivateKeyInfo pi = null;
try {
//var fileStream = System.IO.File.OpenText(pemFilename);
String absolutePath = "";
absolutePath = Encryption.class.getProtectionDomain().getCodeSource().getLocation().getPath();
absolutePath = absolutePath.substring(0, (absolutePath.lastIndexOf("/")+1));
String filePath = "";
filePath = absolutePath + pemFilename;
File f = new File(filePath);
//return filePath;
FileReader fileReader = new FileReader(f);
PEMParser r = new PEMParser(fileReader);
keyParam = (AsymmetricCipherKeyPair) r.readObject();
return keyParam.toString();
}
catch (Exception e) {
return "hello: " + e.getMessage() + e.getLocalizedMessage() + e.toString();
//return e.toString();
//return pi;
}
}
私は感謝を試みます – c0d3Junk13
はい、それは絶対に働いた!どうもありがとうございます。あなたは私の人生をかなり救った! :) – c0d3Junk13