/// <summary> /// 원본 문자열을 SALT 를 이용해 암호화 하여, 원하는 형식의 문자열로 반환한다. /// </summary> /// <param name="originalPassword">원본 문자열</param> /// <param name="newPasswordLength">새로운 문자열의 byte stream 크기</param> /// <param name="format">Base64 or HexaDecimal ContentFormat</param> /// <returns></returns> public static string DerivePasswordAsText(string originalPassword, int newPasswordLength, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { var password = DerivePassword(originalPassword, newPasswordLength); return(BytesToString(password, format)); }
/// <summary> /// 암호화된 Byte 배열을 지정된 형식의 문자열로 변환한다. /// </summary> /// <param name="bytes"></param> /// <param name="format"></param> /// <returns></returns> /// <seealso cref="CryptoTool.StringToBytes"/> public static string BytesToString(this byte[] bytes, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if(bytes == null || bytes.Length == 0) return string.Empty; return (format == EncryptionStringFormat.HexDecimal) ? BytesToHex(bytes) : Convert.ToBase64String(bytes); }
/// <summary> /// 대칭형 암호화 알고리즘을 이용하여, <paramref name="format"/>형태의 <paramref name="cipherText"/>를 복호화합니다. /// </summary> /// <param name="encryptor">대칭형 암호화 인스턴스</param> /// <param name="cipherText">암호화된 정보</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>복화화된 원본 문자열</returns> public static string DecryptString(this ISymmetricEncryptor encryptor, string cipherText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if(cipherText.IsEmpty()) return cipherText; var plainBytes = encryptor.Decrypt(cipherText.StringToBytes(format)); return Encoding.Unicode.GetString(plainBytes).Trim('\0'); }
/// <summary> /// 대칭형 암호화 알고리즘을 이용하여 <paramref name="plainText"/>를 암호화하여, <paramref name="format"/> 형태의 문자열로 반환합니다. /// </summary> /// <param name="encryptor">대칭형 암호화 인스턴스</param> /// <param name="plainText">원본 문자열</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>암호화된 문자열</returns> public static string EncryptString(this ISymmetricEncryptor encryptor, string plainText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if(plainText.IsEmpty()) return plainText; return encryptor .EncryptBytes(Encoding.Unicode.GetBytes(plainText)) .BytesToString(format) .Trim('\0'); }
/// <summary> /// 암호화된 Byte 배열을 지정된 형식의 문자열로 변환한다. /// </summary> /// <param name="bytes"></param> /// <param name="format"></param> /// <returns></returns> /// <seealso cref="CryptoTool.StringToBytes"/> public static string BytesToString(this byte[] bytes, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if (bytes == null || bytes.Length == 0) { return(string.Empty); } return((format == EncryptionStringFormat.HexDecimal) ? BytesToHex(bytes) : Convert.ToBase64String(bytes)); }
/// <summary> /// 지정된 형식의 문자열을 byte 배열로 변환한다. /// </summary> /// <param name="content">변환할 문자열</param> /// <param name="format">변활할 포맷</param> /// <returns></returns> /// <seealso cref="CryptoTool.BytesToString"/> public static byte[] StringToBytes(this string content, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if (content.IsEmpty()) { return(new byte[0]); } return((format == EncryptionStringFormat.HexDecimal) ? HexToBytes(content) : Convert.FromBase64String(content)); }
/// <summary> /// 대칭형 암호화 알고리즘을 이용하여, <paramref name="format"/>형태의 <paramref name="cipherText"/>를 복호화합니다. /// </summary> /// <param name="encryptor">대칭형 암호화 인스턴스</param> /// <param name="cipherText">암호화된 정보</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>복화화된 원본 문자열</returns> public static string DecryptString(this ISymmetricEncryptor encryptor, string cipherText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if (cipherText.IsEmpty()) { return(cipherText); } var plainBytes = encryptor.Decrypt(cipherText.StringToBytes(format)); return(Encoding.Unicode.GetString(plainBytes).Trim('\0')); }
/// <summary> /// 대칭형 암호화 알고리즘을 이용하여 <paramref name="plainText"/>를 암호화하여, <paramref name="format"/> 형태의 문자열로 반환합니다. /// </summary> /// <param name="encryptor">대칭형 암호화 인스턴스</param> /// <param name="plainText">원본 문자열</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>암호화된 문자열</returns> public static string EncryptString(this ISymmetricEncryptor encryptor, string plainText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if (plainText.IsEmpty()) { return(plainText); } return (encryptor .EncryptBytes(Encoding.Unicode.GetBytes(plainText)) .BytesToString(format) .Trim('\0')); }
/// <summary> /// 원본 문자열을 SALT 를 이용해 암호화 하여, 원하는 형식의 문자열로 반환한다. /// </summary> /// <param name="originalPassword">원본 문자열</param> /// <param name="newPasswordLength">새로운 문자열의 byte stream 크기</param> /// <param name="format">Base64 or HexaDecimal ContentFormat</param> /// <returns></returns> public static string DerivePasswordAsText(string originalPassword, int newPasswordLength, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { var password = DerivePassword(originalPassword, newPasswordLength); return BytesToString(password, format); }
/// <summary> /// Hash 값을 계산해서, 문자열로 반환합니다. /// </summary> /// <param name="hasher">Hash 알고리즘을 이용하는 암호기</param> /// <param name="plainText">원본 문자열</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>Hashing 된 문자열</returns> public static string ComputeHashToString(this IHashEncryptor hasher, string plainText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return hasher.ComputeHash(plainText, format); }
public static string ComputeHashToText(this IHashEncryptor encryptor, string text, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return encryptor.ComputeHash(text, format); }
/// <summary> /// Hash 값을 계산해서, 문자열로 반환합니다. /// </summary> /// <param name="hasher">Hash 알고리즘을 이용하는 암호기</param> /// <param name="plainText">원본 문자열</param> /// <param name="format">암호화된 정보의 문자열 형식(Base64|HexDecimal)</param> /// <returns>Hashing 된 문자열</returns> public static string ComputeHashToString(this IHashEncryptor hasher, string plainText, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return(hasher.ComputeHash(plainText, format)); }
/// <summary> /// 지정된 문자열을 암호화를 수행하고, 값을 일반적인 값으로 반환한다. /// </summary> /// <param name="plainText">암호화할 문자열</param> /// <param name="format">암호화한 정보를 문자열로 표현시 사용할 포맷 (Base64/Hex)</param> /// <returns>Hashing한 정보</returns> /// <exception cref="ArgumentNullException">암호화할 문자열이 빈 문자열일 때</exception> public virtual string ComputeHash(string plainText, EncryptionStringFormat format) { return ComputeHash(plainText).BytesToString(format); }
public static string ComputeHashToText(this IHashEncryptor encryptor, string text, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return(encryptor.ComputeHash(text, format)); }
public static Task <string> ComputeHashToTextAsync(this IHashEncryptor encryptor, string text, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return(Task.Factory.StartNew(() => encryptor.ComputeHash(text, format))); }
/// <summary> /// 지정된 형식의 문자열을 byte 배열로 변환한다. /// </summary> /// <param name="content">변환할 문자열</param> /// <param name="format">변활할 포맷</param> /// <returns></returns> /// <seealso cref="CryptoTool.BytesToString"/> public static byte[] StringToBytes(this string content, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { if(content.IsEmpty()) return new byte[0]; return (format == EncryptionStringFormat.HexDecimal) ? HexToBytes(content) : Convert.FromBase64String(content); }
/// <summary> /// 지정된 문자열을 암호화를 수행하고, 값을 일반적인 값으로 반환한다. /// </summary> /// <param name="plainText">암호화할 문자열</param> /// <param name="format">암호화한 정보를 문자열로 표현시 사용할 포맷 (Base64/Hex)</param> /// <returns>Hashing한 정보</returns> /// <exception cref="ArgumentNullException">암호화할 문자열이 빈 문자열일 때</exception> public virtual string ComputeHash(string plainText, EncryptionStringFormat format) { return(ComputeHash(plainText).BytesToString(format)); }
public static Task<string> ComputeHashToTextAsync(this IHashEncryptor encryptor, string text, EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) { return Task.Factory.StartNew(() => encryptor.ComputeHash(text, format)); }