Browse Source

no repeat random number generator

The stock code use class Random to generate IV, the Random is pseudo random number generator. The IV maybe repeat, this will cause shadowsocks-libev closed the sockets with the error message 'invalid password or cipher'. Reference https://github.com/shadowsocks/shadowsocks-libev/issues/389

Solution is use class RNGCryptoServiceProvider to generate IV, of course it's lower performance, but a little bit.
tags/2.5.7
Gang Zhuo icylogic 9 years ago
parent
commit
72ea01d566
1 changed files with 2 additions and 1 deletions
  1. +2
    -1
      shadowsocks-csharp/Encryption/IVEncryptor.cs

+ 2
- 1
shadowsocks-csharp/Encryption/IVEncryptor.cs View File

@@ -88,7 +88,8 @@ namespace Shadowsocks.Encryption
protected static void randBytes(byte[] buf, int length)
{
byte[] temp = new byte[length];
new Random().NextBytes(temp);
RNGCryptoServiceProvider rngServiceProvider = new RNGCryptoServiceProvider();
rngServiceProvider.GetBytes(temp);
temp.CopyTo(buf, 0);
}


Loading…
Cancel
Save