Пример #1
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));
        }
Пример #2
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);
        }
Пример #3
0
        /// <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');
        }
Пример #4
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');
        }
Пример #5
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));
        }
Пример #6
0
        /// <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));
        }
Пример #7
0
        /// <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'));
        }
Пример #8
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'));
        }
Пример #9
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);
 }
Пример #10
0
 /// <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);
 }
Пример #11
0
 public static string ComputeHashToText(this IHashEncryptor encryptor, string text,
                                        EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) {
     return encryptor.ComputeHash(text, format);
 }
Пример #12
0
 /// <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));
 }
Пример #13
0
 /// <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);
 }
Пример #14
0
 public static string ComputeHashToText(this IHashEncryptor encryptor, string text,
                                        EncryptionStringFormat format = EncryptionStringFormat.HexDecimal)
 {
     return(encryptor.ComputeHash(text, format));
 }
Пример #15
0
 public static Task <string> ComputeHashToTextAsync(this IHashEncryptor encryptor, string text,
                                                    EncryptionStringFormat format = EncryptionStringFormat.HexDecimal)
 {
     return(Task.Factory.StartNew(() => encryptor.ComputeHash(text, format)));
 }
Пример #16
0
        /// <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);
        }
Пример #17
0
 /// <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));
 }
Пример #18
0
 public static Task<string> ComputeHashToTextAsync(this IHashEncryptor encryptor, string text,
                                                   EncryptionStringFormat format = EncryptionStringFormat.HexDecimal) {
     return Task.Factory.StartNew(() => encryptor.ComputeHash(text, format));
 }