우리는 다른 회사의 API를 사용하고 있습니다.
해당 API에서 나는 RSACryptoServiceProvider
을 사용하여 키 쌍을 생성하고 우리가 데이터를 암호화 할 수 있도록 공개 키를 보내야합니다.RSA - 만 (!) 계수를 사용하여 암호화?
그건 문제가되지 않습니다. API에서 공개 키는 byte[]
유형입니다. 다음
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
var pubKey = rsa.ToXmlString(false); //only public
그리고 byte[]
로 대표 :
var ValuetoSend = Encoding.UTF8.GetBytes(pubKey);
을 그리고 그 값을 보낼 수 있습니다.
그러나 그들은 응답 :
는
그래서 궁금했습니다, 그것은 가능 "당신은 단지 RSAKeyInfo
정보를 우리에게 Modulus
속성을 제공해야"? 모듈러스 만 사용하여 데이터를 암호화 할 수 있습니까?
My Code
및
Their code
을주의하시기 바랍니다)
//My Code
byte[] data_clear = UTF8Encoding.UTF8.GetBytes("hellowא");
var rsa = new RSACryptoServiceProvider(1024);
var MyModulus = rsa.ExportParameters(true).Modulus;
//Their code (I assume , If they only want MyModulus)
var rsa2 = new RSACryptoServiceProvider(1024);
var rsa2Params = rsa2.ExportParameters(true);
rsa2Params.Modulus=MyModulus; //they set their Modulus to MY Modulus
byte[] enc_data = rsa2.Encrypt(data_clear, true);
// Back to my code
var g=Encoding.UTF8.GetString(rsa.Decrypt(enc_data, true));
Console.WriteLine(g);
이 결과 : 예외 : OAEP 패딩을 디코딩하는 동안
CryptographicException 오류가 발생했습니다.
질문
1) 그것은 그들 만 계수를 사용하여 암호화 할 수 있습니까?
2) 그렇다면 내 테스트에 무엇이 잘못되었으며 어떻게 해결할 수 있습니까?
편집 - 나는 exponenet를 추가하더라도, 그것은 실패
이//My Code
byte[] data_clear = UTF8Encoding.UTF8.GetBytes("hellowא");
var rsa = new RSACryptoServiceProvider(1024);
var MyModulus = rsa.ExportParameters(true).Modulus;
var MyExponent = rsa.ExportParameters(true).Exponent;
//Their code (I assume , If they only want MyModulus)
var rsa2 = new RSACryptoServiceProvider(1024);
var rsa2Params = rsa2.ExportParameters(true);
rsa2Params.Modulus=MyModulus; //they set their Modulus to MY Modulus
rsa2Params.Exponent=MyExponent; //they set their Modulus to MY Modulus
byte[] enc_data = rsa2.Encrypt(data_clear, true);
// Back to my code
var g=Encoding.UTF8.GetString(rsa.Decrypt(enc_data, true));
Console.WriteLine(g);
//CryptographicException Error occurred while decoding OAEP padding.
나는 모듈러스와 지수가 필요하다고 생각한다. 뭔가 여기 꽤 사납게 보인다. –
@EricLippert 안녕하세요 Eric. 지수를 제공하더라도 [실패 함] (https://i.imgur.com/H1uMPRG.jpg) –
Modulus 종류 **는 ** 키의 공개 부분입니다 (개인 키 = 모든 요소는 별도로). 하지만 지수가 없으면 쓸모 없지, 안 그래? –