0

初期ベクトルを DES に使用する方法がわかりません。CBCモードブロック暗号モードの操作での初期ベクトルの式を読みました。私の平文を数式に実装する方法。例えられますか

平文 = コンピュータ、バイナリ = 01000011 01001111 01001101 01010000 01010101 01010100 01000101 01010010、16 進数 = 43 4F 4D 50 55 54 45 52| キー = ENCRYPTT、バイナリ = 01000101 01001110 01000011 01010010 01011001 01010000 01010100 01010100、16 進数 = 45 4E 43 52 59 50 54 54

ありがとう

アップデート :

2 つの DES Encrypt プロジェクトがあります。最初のプロジェクトはライブラリを使用し、2 番目のプロジェクトはライブラリを使用しません。ライブラリを使用し、CBC 暗号化モードを使用する最初のプロジェクトと、ライブラリを使用せず、暗号化モードを使用しない 2 番目のプロジェクト。暗号化の暗号文は、1 つ目と 2 つ目の異なるプログラムになります。問題は、同じ結果を暗号化する 2 番目のプログラムに何を追加すればよいかということです。ライブラリを使用しない 2 番目のプログラムに CBC モードを追加する方法。

ライブラリを使用した最初のプロジェクト コード:

DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.Mode = CipherMode.CBC;

ライブラリのない 2 番目のプロジェクト コード:

public void getAll_RL() 
{
            string proses = "";
            List<string> R = new List<string>();
            List<string> L = new List<string>();
            R.Add(txtR0.Text);
            R.Add(txtR1.Text);
            L.Add(txtL0.Text);
            L.Add(txtL1.Text);
            L.Add(txtR1.Text);
            for (int x = 2; x <= 16; x++)
            {
                txtProses.Text = string.Empty;
                string resultEks = string.Empty;
                cp.Table(R[x - 1], "E", ref resultEks); //Tabel Ekspansi
                string resultXOR = string.Empty;
                string subKey = (string)DGVSubKey.Rows[x - 1].Cells[1].Value;
                cp.XOR(resultEks, subKey, ref resultXOR);
                string resultSBOX = string.Empty;
                cp.SBOX(resultXOR, ref resultSBOX);
                string resultPBOX = string.Empty;
                cp.Table(resultSBOX, "PBOX", ref resultPBOX);
                string resultXOR2 = string.Empty;
                cp.XOR(resultPBOX, L[x - 1], ref resultXOR2);
                R.Add(resultXOR2);
                L.Add(resultXOR2);
            }
            txtL16.Text = L[16];
            txtR16.Text = R[16];
            txtRL16.Text = R[16] + L[16] ;
 }

public void getIP1() 
        {
            string RL16 = txtRL16.Text;
            if (RL16.Length == 64)
            {
                string result = string.Empty;
                cp.Table(RL16, "IP1", ref result);
                txtIP1.Text = result;
            }
        }

public void getHexResult() 
        {
            string IP1 = txtIP1.Text;
            if (IP1.Length == 64)
            {
                List<string> AllBinary = new List<string>();
                string Hex = string.Empty;
                string ResultHex = string.Empty;
                for (int x = 0; x < 8; x++)
                {
                    string string8 = IP1.Substring(8 * x, 8);
                   AllBinary.Add(string8);
                    string hex = Convert.ToInt64(AllBinary[x], 2).ToString("X");
                    Hex += hex + " ";
                }
                string[] hexSplit = Hex.TrimEnd().Split(' ');
                for (int x = 0; x < 8; x++) 
                {
                    if (hexSplit[x].Length == 1)
                    {
                        ResultHex += "0" + hexSplit[x] +" ";
                    }
                    else 
                    { 
                        ResultHex += hexSplit[x] + " "; 
                    }
                }
                txtHexResult.Text = ResultHex.TrimEnd();
            } 
        }

16 進数の暗号文の結果:

最初のプロジェクト: 2B B7 4F 52 A8 0E 9F 0F、2番目のプロジェクト: A6 53 62 DD FD 25 A0 C5

4

0 に答える 0