Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Crypto/Engines/VmpcKsa3Engine.cs
2025-10-09 09:57:24 +09:00

39 lines
865 B
C#

namespace Org.BouncyCastle.Crypto.Engines;
public class VmpcKsa3Engine : VmpcEngine
{
public override string AlgorithmName => "VMPC-KSA3";
protected override void InitKey(byte[] keyBytes, byte[] ivBytes)
{
s = 0;
P = new byte[256];
for (int i = 0; i < 256; i++)
{
P[i] = (byte)i;
}
for (int j = 0; j < 768; j++)
{
s = P[(s + P[j & 0xFF] + keyBytes[j % keyBytes.Length]) & 0xFF];
byte b = P[j & 0xFF];
P[j & 0xFF] = P[s & 0xFF];
P[s & 0xFF] = b;
}
for (int k = 0; k < 768; k++)
{
s = P[(s + P[k & 0xFF] + ivBytes[k % ivBytes.Length]) & 0xFF];
byte b2 = P[k & 0xFF];
P[k & 0xFF] = P[s & 0xFF];
P[s & 0xFF] = b2;
}
for (int l = 0; l < 768; l++)
{
s = P[(s + P[l & 0xFF] + keyBytes[l % keyBytes.Length]) & 0xFF];
byte b3 = P[l & 0xFF];
P[l & 0xFF] = P[s & 0xFF];
P[s & 0xFF] = b3;
}
n = 0;
}
}