2

キーとして使用できるように、長さが 0 から 15 のカスタム文字列を強制的に 128 ビット文字列にしようとしていAesCryptoServiceProviderます。

複数の戦略をいじってみましたが、最終的には次のようになりました。

        if (stringToConvert.Length > 16)
        {
            StringBuilder sB = new StringBuilder();
            char[] chA = stringToConvert.ToCharArray();
            int chAMaxLength = chA.Length;

            for (int i = 0; i < 16; i++)
            {
                if (i <= chAMaxLength)
                {
                    sB.Append(chA[i]);
                }
            }
        }

正確に 16 文字 (16*8 = 128) の文字列が必要です。

私は今それで立ち往生しており、この障害物を通り抜けるために助けが必要です.
これが簡単に思えるかもしれませんが、事前にお詫び申し上げます。

例:
asdなる
asdasdasdasdasda

4

2 に答える 2

1
StringBuilder b = new StringBuilder();
for (int i = 0; i < 8; i++)
{
    b.Append(stringToConvert[i % stringToConvert.Length]);
}
stringToConvert = b.ToString();
byte[] key = Encoding.Unicode.GetBytes(stringToConvert);//key size is 16 bytes = 128 bits

さらに良い(なしStringBuilder):

byte[] key = new byte[16];
for (int i = 0; i < 16; i+=2)
{
    byte[] unicodeBytes = BitConverter.GetBytes(stringToConvert[i % stringToConvert.Length]);
    Array.Copy(unicodeBytes, 0, key, i, 2);
}
于 2013-08-08T09:41:21.067 に答える