· 7 years ago · May 02, 2018, 09:08 PM
1var fileStream = new FileStream(sourceFile,FileMode.Open);
2var salt = new byte[SaltSize];
3fileStream.Read( salt, 0, SaltSize );
4// initialize algorithm with salt
5var keyGenerator = new Rfc2898DeriveBytes( password, salt );
6var rijndael = Rijndael.Create();
7rijndael.IV = keyGenerator.GetBytes( rijndael.BlockSize / 8 );//128/8 = 16
8rijndael.Key = keyGenerator.GetBytes( rijndael.KeySize / 8 );//256/8 = 32
9using( var cryptoStream = new CryptoStream( fileStream, rijndael.CreateDecryptor(), CryptoStreamMode.Read ) )
10{
11---- дальше не важно
12
13SecureRandom r = new SecureRandom();
14byte[] Salt = new byte[8];
15r.nextBytes(Salt);
16SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
17SecretKey tmp = factory.generateSecret(new PBEKeySpec(key.toCharArray(), Salt, 1000, 128));
18IvParameterSpec iv = new IvParameterSpec(tmp.getEncoded());//128/8 = 16
19tmp = factory.generateSecret(new PBEKeySpec(key.toCharArray(), Salt, 1000, 256));
20SecretKeySpec skeySpec = new SecretKeySpec(bbb, "AES");//256/8 = 32
21Cipher rijndael = Cipher.getInstance("AES");
22rijndael.init(Cipher.ENCRYPT_MODE, skeySpec,iv);
23
24IV = 84, 113, -97, 65, 36, -2, -67, -7, 34, 91, 109, 79, 77, 36, 112, 92
25Key = 84, 113, -97, 65, 36, -2, -67, -7, 34, 91, 109, 79, 77, 36, 112, 92, -82, 18, 14, 99, -113, -61, 75, 68, -41, -34, 30, 77, 86, 35, 58, 46
26
27IV = 84, 113, -97, 65, 36, -2, -67, -7, 34, 91, 109, 79, 77, 36, 112, 92
28Key = -82, 18, 14, 99, -113, -61, 75, 68, -41, -34, 30, 77, 86, 35, 58, 46, -90, 61, 106, -1, -117, 56, 107, 8, -109, -30, -119, -22, 77, 103, -17, 127