私のプロジェクトでは、ユーザーがライセンスキーを入力した後に製品がアクティブ化されるライセンス方法を行っています。次のコードを使用していますが、「パディングが無効であり、削除できません」という例外がスローされます。以下は私のコードです
public void ValidateProductKey()
{
RSACryptoServiceProvider _cryptoService = new RSACryptoServiceProvider();
string productKey = "G7MA4Z5VR5R3LG001AS1N5HA3YHX05";
byte[] keyBytes = Base32Converter.FromBase32String(productKey); //Base32Converter is my customized method which returns byte of values;
byte[] signBytes = new byte[2];
byte[] hiddenBytes = new byte[16];
using (MemoryStream stream = new MemoryStream(keyBytes))
{
stream.Read(hiddenBytes, 0, 8);
stream.Read(signBytes, 0, 2);
stream.Read(hiddenBytes, 8, hiddenBytes.Length - 8);
keyBytes = stream.ToArray();
}
byte[] sign = _cryptoService.SignData(signBytes, new SHA1CryptoServiceProvider());
byte[] rkey = new byte[32];
byte[] rjiv = new byte[16];
Array.Copy(sign, rkey, 32);
Array.Copy(sign, 32, rjiv, 0, 16);
SymmetricAlgorithm algorithm = new RijndaelManaged();
try
{
hiddenData = algorithm.CreateDecryptor(rkey, rjiv).TransformFinalBlock(hiddenBytes,0,hiddenBytes.Length);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
「hiddenData」変数に到達すると、「パディングが無効であり、削除できません」という例外がスローされます。どんな助けでも本当にありがたいです。