타사 도킹 암호화 및 복호화 시리즈
서문
최근 DEW 오픈 플랫폼의 암호화 및 복호화 처리 과정에서 많은 시간을 낭비하고 있으며, 인터넷의 코드도 다양하고 최종적으로 학생들에게 필요한 다음과 같은 테스트가 진행되었습니다.
암호화 및 암호 해독 지침
문서
테스트 코드
static void Main(string[] args)
{
//
string plainTxt = "{"list":[{"applyItemNo":"JS570516000080113874","applyNo":"AP1010015038937","num":1,"orderNo":"110105115769884450","skuId":6039421775,"sourceType":"PX_TYPE_NORMAL","spuId":1000108135}],"originalMsgId":2211713,"type":"CONSIGN_RETURN_ON_SHELF","appKey":"7e26470b56dd4d93a8063f1ecc76f986","openId":"VGnFvRhQu6kwswmG"}";
//
var encryptedTxt = $"PR2ccpPboDC+cvnoMlyXOEDEgZhTNnB/HmQZHd+/ysw84BhdZ+658xLGkJbsLuCj53pfp+bXBZeisxPk8lffj9XYAL0eDO7nUW5WWbimWk/ShaqyA5/0Y9ym+odylqs+HiDKCAlate/kvPuhT6E6BfAYDdCaRHqRz82f/qkq8sG3AtvdiiltaYX7T39ky3Q8jLSp7d3qOiwcfcA3jc7ICuWeEQibsZxtidq25VcsnQnOhoD3EwsSjxDUlo6GQ0QRs42aQdQf6wREjkdSt4PQPwSfetgCMLY5Hca9OsA3ru4qIU+fj4exJIuoGKmcQTd9Pps2Y/yiKrQsMBVkF+AQWo9if7w277aF7BKXoMyXwM6MhPXIyTrqkciUBNFGOB7YeHu9/ztqO9fcXpbiYu2YgwMkvdD3Y98hQwlEvXoI=";
//키, 64비트
string keys = "3f170f3943e8419c87ce4491a2b6492216f3c99a0fd14de18ae515e3c61e4214";
//
byte[] encryptBytes = AESEncryption.AESEncrypt(Encoding.UTF8.GetBytes(plainTxt), keys);
Console.WriteLine($"암호화 테스트 결과: {Convert.ToBase64String(encryptBytes).Equals(encryptedTxt)}");
//
byte[] decryptBytes = AESEncryption.AESDecrypt(Convert.FromBase64String(encryptedTxt), keys);
Console.WriteLine("암호 해독 결과:"+ Encoding.UTF8.GetString(decryptBytes).Equals(plainTxt));
}
암호화 및 암호 해독 알고리즘 코드
class AESEncryption
{
/// <summary>
/// AES암호화 알고리즘
/// </summary>
/// <param name="plainText">일반 텍스트 문자열</param>
/// <param name="strKey">Key</param>
/// <returns>암호화된 암호문 바이트 배열을 반환합니다.</returns>
public static byte[] AESEncrypt(byte[] inputByteArray, string strKey)
{
SymmetricAlgorithm algorithm = CreateAesAlgorithm(strKey);
ICryptoTransform cTransform = algorithm.CreateEncryptor();
return cTransform.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
}
/// <summary>
/// AES
/// </summary>
/// <param name="cipherText">암호문 바이트 배열</param>
/// <param name="strKey">Key</param>
/// <returns>해독된 문자열 반환</returns>
public static byte[] AESDecrypt(byte[] cipherText, string strKey)
{
SymmetricAlgorithm algorithm = CreateAesAlgorithm(strKey);
ICryptoTransform decryptor = algorithm.CreateDecryptor();
return decryptor.TransformFinalBlock(cipherText, 0, cipherText.Length);
}
private static Aes CreateAesAlgorithm(string strKey)
{
var aes = Aes.Create();
aes.Key = GetKey(strKey);
aes.BlockSize = 128;
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
return aes;
}
public static byte[] GetKey(string aesKey)
{
using var sha1 = SHA1.Create();
byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(aesKey));
var rd = sha1.ComputeHash(hash);
return rd.Take(16).ToArray();
}
}





