Skip to content

Commit 40dbb5f

Browse files
committed
Add test about rsa encrypt string length limit.
1 parent 5cabc21 commit 40dbb5f

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

test/NETCore.Encrypt.Tests/RSA_Tests.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Xunit;
55
using NETCore.Encrypt;
66
using System.Security.Cryptography;
7+
using NETCore.Encrypt.Extensions;
78

89
namespace NETCore.Encrypt.Tests
910
{
@@ -154,5 +155,58 @@ public void Rsa_From_JsonString_Test()
154155
Assert.NotNull(rsa);
155156

156157
}
158+
159+
[Theory(DisplayName = "Rsa encrypt string length limit test")]
160+
[InlineData(RsaSize.R2048)]
161+
[InlineData(RsaSize.R3072)]
162+
[InlineData(RsaSize.R4096)]
163+
public void Rsa_Encrypt_LengthLimit_Test(RsaSize size)
164+
{
165+
var rsaKey = EncryptProvider.CreateRsaKey(size);
166+
167+
var publicKey = rsaKey.PublicKey;
168+
169+
//Act
170+
var rawStr = "eyJNb2R1bHVzIjoidHVSL1V1dFVSV0RSVElDYTFFRDcraUF2MUVnQUl0dC9oNkhHc0x6SG80QXAyVVdqWGtvRkp4T1NuRmdhY3d4cWM0WUg5UDdRaVIxQ1lCK3lvMnJUbkhZbVIrYWs2V3RJRU1YNWtmTTJrWHBNUVY2aFBrd0FxRTFpU1pWRUM2eXlmeTNGZUJTVmNnVlUwMFpJMGozbzhqT3ZMOXhneGhmT1J1eTcwM1RUbXdFPSIsIkV4cG9uZW50IjoiQVFBQiIsIlAiOiI3MVNIYVRnK2JvOXhzRnEzSXlrcHRFUXVHUXZTNDNEUDFoM04xcVlBN1E1VHpoS0IydEc1RWxvamtYTkF4d0VVVStxSnZMWDBxTHdzd09zRkhaL3lydz09IiwiUSI6Inc2R2ltem84a0lUL0xuS2U0Sk5QTUt2YTlVVzBSZUZlVzA5U1ZtVnFVWS9VeHl2eU9kemowd3JzTTZib1ZCU1JnZi9SbUZwRUZ1bUZTVW9yVWkxNVR3PT0iLCJEUCI6Im9yNXpPaXloMzZLeFozKzRhek54aFlDYmJES3JIRGc1VEZ1Ri9rRngvY0V4WWI4YUNFZDJ0ekVPWUxqandxOU1PR2dUYzN5enV3NEN6TWpEK01vc1J3PT0iLCJEUSI6InMvNGhhQVM2K0pVRlhDemxkT2JVTTRuTEdXUWFxempoNGMwbmlvb2d1ZzVGelVMbnlNa3RiRjFlV1YrMTNyWlY4bS8yM2VBZlNaMXRuckw1RE5EK0RRPT0iLCJJbnZlcnNlUSI6IlBPSkRGUk03MmVxd0R3TytldDFpTzIwTWlQcFVEUS93N1hEMHBMLzJWYTE4OEgrRGlaK0NuZDJRdnFYZyt4NFdNZSsrVlVNYXo2bWM3V1g4WnBaWW9RPT0iLCJEIjoiWE1QUEZPYktDcHFON21pNG4zb0tsSmFveTlwdFAwRG9FWXBydGc4NmoyS2RWMWZzQWhJM1JOZTNvRmRMcXhrY0VWWmxTTTNLUmhHeUxnRkY0WDk0cnVIYjBQeC9LZVQxMW1BeDNvQ2NCRVlWelhabXlIUHQzWCs2dlBMZzdmYUhtRmlxK3N0Y2NMTlBNSEdna2lkWTF6NGtiTXZwZnBlOWxhN0VMWUdKM21VPSJ9";
171+
172+
173+
//RSAEncryptionPaddingMode is Pkcs1
174+
var padding = RSAEncryptionPadding.Pkcs1;
175+
var maxLength = ((int) size - 384) / 8 + 37;
176+
var rawData = rawStr.Substring(0, maxLength);
177+
178+
var encryptStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
179+
180+
181+
//RSAEncryptionPaddingMode is Oaep
182+
padding = RSAEncryptionPadding.OaepSHA1;
183+
184+
var sha1 = "oaep".SHA1();
185+
var length = sha1.Length;
186+
maxLength = (int) size / 8 - 42; //214 //40
187+
rawData = rawStr.Substring(0, maxLength);
188+
189+
encryptStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
190+
191+
192+
padding = RSAEncryptionPadding.OaepSHA256;
193+
194+
maxLength = (int) size / 8 - 66; //190 //64
195+
rawData = rawStr.Substring(0, maxLength);
196+
197+
encryptStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
198+
199+
padding = RSAEncryptionPadding.OaepSHA384;
200+
maxLength = (int) size / 8 - 100; //158 //96
201+
rawData = rawStr.Substring(0, maxLength);
202+
203+
encryptStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
204+
205+
padding = RSAEncryptionPadding.OaepSHA512;
206+
maxLength = (int) size / 8 - 130; //126 // 128
207+
rawData = rawStr.Substring(0, maxLength);
208+
209+
encryptStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
210+
}
157211
}
158212
}

0 commit comments

Comments
 (0)