今更ですが、TripleDES。
Macでdotnet coreで作成。
dotnet new console -o testdes
cd testdes
dotnet restore
using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace test
{
class Program
{
static void Main(string[] args)
{
//準備 =================================================================================
//key, iv
byte[] key = Encoding.UTF8.GetBytes("123456789012345678901234"); //半角24文字 196bit
byte[] iv = Encoding.UTF8.GetBytes("12345678"); //半角8文字 64bit
//3DES
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
//文字列
string srcStr = "hogehoge";
//出力
Console.WriteLine("元の文字列: " + srcStr);
//暗号化処理 ============================================================================
//byte変換
byte[] srcByte = Encoding.UTF8.GetBytes(srcStr);
//MemoryStream
MemoryStream ms = new MemoryStream();
//CryptoStream
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, iv), CryptoStreamMode.Write);
cs.Write(srcByte, 0, srcByte.Length);
cs.Close();
byte[] encData = ms.ToArray();
ms.Close();
//普通に出力すると文字化け?するので、Base64でエンコード。
string encStr = System.Convert.ToBase64String(encData);
Console.WriteLine("暗号化+Base64: " + encStr);
//複合処理 ============================================================================
byte[] encByte = System.Convert.FromBase64String(encStr);
MemoryStream ms2 = new MemoryStream();
CryptoStream cs2 = new CryptoStream(ms2, des.CreateDecryptor(key, iv), CryptoStreamMode.Write);
cs2.Write(encByte, 0, encByte.Length);
cs2.Close();
byte[] decByte = ms2.ToArray();
ms2.Close();
string decStr = Encoding.UTF8.GetString(decByte);
Console.WriteLine("複合: " + decStr);
}
}
}
dotnet run
元の文字列: hogehoge
暗号化+Base64: cadNJMDQ934XJDU8Tx7b/g==
複合: hogehoge