コード例 #1
0
        public static string GetHash(string input)
        {
            HashAlgorithm hashAlgorithm = new SHA256CryptoServiceProvider();

            byte[] byteValue = System.Text.Encoding.UTF8.GetBytes(input);

            byte[] byteHash = hashAlgorithm.ComputeHash(byteValue);

            return Convert.ToBase64String(byteHash);
        }
コード例 #2
0
        // https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials
        public async Task <string> GetClientAssertionAsync(string tenantId, string appId)
        {
            try
            {
                var cert = await _kvClient.GetCertificateAsync($"https://{_kvName}.vault.azure.net/certificates/func-cred-cert/{_signingKeyId}").ConfigureAwait(false);

                //var thumbprint = cert.X509Thumbprint.Aggregate(new StringBuilder(),
                //               (sb, v) => sb.Append(v.ToString("X2"))).ToString();
                var x509  = new System.Security.Cryptography.X509Certificates.X509Certificate2(cert.Cer);
                var jwk   = JsonWebKeyConverter.ConvertFromX509SecurityKey(new X509SecurityKey(x509));
                var token = new JwtSecurityToken(
                    issuer: appId,
                    audience: $"https://login.microsoftonline.com/{tenantId}/oauth2/token",
                    claims: new Claim[]
                {
                    new Claim("jti", Guid.NewGuid().ToString("D")),
                    new Claim("sub", appId)
                },
                    notBefore: DateTime.UtcNow,
                    expires: DateTime.UtcNow.AddMinutes(10)
                    );
                var header = Base64UrlEncoder.Encode(JsonConvert.SerializeObject(new Dictionary <string, string>()
                {
                    { JwtHeaderParameterNames.Alg, "RS256" },
                    { JwtHeaderParameterNames.X5t, jwk.X5t }, // "CM2UiOQMKph-SkcT5_Ejki2Kzik"; initially, used B2C to get this value; see https://stackoverflow.microsoft.com/questions/179774
                    { JwtHeaderParameterNames.Typ, "JWT" }
                }));

                var unsignedToken = $"{header}.{token.EncodedPayload}";
                var byteData      = Encoding.UTF8.GetBytes(unsignedToken);
                var hasher        = new SHA256CryptoServiceProvider();
                var digest        = hasher.ComputeHash(byteData);
                var signature     = await _kvClient.SignAsync($"https://{_kvName}.vault.azure.net/keys/func-cred-cert/{_signingKeyId}", "RS256", digest);

                return($"{unsignedToken}.{Base64UrlEncoder.Encode(signature.Result)}");
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
コード例 #3
0
        /// <summary>
        /// Verifies that a digital signature is valid by determining the hash value
        /// in the signature using the provided public key and comparing it to the hash
        /// value of the provided data.
        /// </summary>
        /// <param name="buffer">The data that was signed.</param>
        /// <param name="signature">The signature data to be verified.</param>
        /// <param name="rsaProvider">the RSA crypto service provider.</param>
        /// <param name="hashAlgorithm">The hash algorithm to use to create the hash value.</param>
        /// <returns>True if the signature is valid; otherwise, false.</returns>
        public static bool VerifyData(byte[] buffer, byte[] signature, RSACryptoServiceProvider rsaProvider, Nequeo.Cryptography.HashcodeType hashAlgorithm = HashcodeType.SHA512)
        {
            bool dataVerified = false;

            // Select the hash code type.
            switch (hashAlgorithm)
            {
            case HashcodeType.MD5:
                // MD5 hashcode.
                MD5 md5 = new MD5CryptoServiceProvider();
                dataVerified = rsaProvider.VerifyData(buffer, md5, signature);
                break;

            case HashcodeType.SHA1:
                // SHA1 hashcode.
                SHA1 sha1 = new SHA1CryptoServiceProvider();
                dataVerified = rsaProvider.VerifyData(buffer, sha1, signature);
                break;

            case HashcodeType.SHA256:
                // SHA256 hashcode.
                SHA256 sha256 = new SHA256CryptoServiceProvider();
                dataVerified = rsaProvider.VerifyData(buffer, sha256, signature);
                break;

            case HashcodeType.SHA384:
                // SHA384 hashcode.
                SHA384 sha384 = new SHA384CryptoServiceProvider();
                dataVerified = rsaProvider.VerifyData(buffer, sha384, signature);
                break;

            case HashcodeType.SHA512:
                // SHA512 hashcode.
                SHA512 sha512 = new SHA512CryptoServiceProvider();
                dataVerified = rsaProvider.VerifyData(buffer, sha512, signature);
                break;
            }

            // Return the result.
            return(dataVerified);
        }
コード例 #4
0
        /// <summary>
        /// Creates an RSA PKCS#1 v1.5 signature of a SHA256 for the stream.
        /// </summary>
        private static byte[] RsaPkcs15Sha256_Sign(
            ArraySegment <byte> dataToSign,
            X509Certificate2 signingCertificate)
        {
            // extract the private key.
            RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)signingCertificate.PrivateKey;

            if (rsa == null)
            {
                throw ServiceResultException.Create(StatusCodes.BadSecurityChecksFailed, "No private key for certificate.");
            }

            // Instantiate enhanced crypto provider that supports SHA256
            const int PROV_RSA_AES = 24;

            if (rsa != null && rsa.CspKeyContainerInfo.ProviderType != PROV_RSA_AES && rsa.CspKeyContainerInfo.Exportable)
            {
                byte[] privateKeyBlob    = rsa.ExportCspBlob(true);
                var    enhCsp            = new RSACryptoServiceProvider().CspKeyContainerInfo;
                string mKeyContainerName = rsa.CspKeyContainerInfo.KeyContainerName;
                var    cspparams         = new CspParameters
                                           (
                    enhCsp.ProviderType, enhCsp.ProviderName, mKeyContainerName
                                           );

                rsa = new RSACryptoServiceProvider(rsa.KeySize, cspparams);
                rsa.ImportCspBlob(privateKeyBlob);
            }

            // compute the hash of message.
            MemoryStream istrm = new MemoryStream(dataToSign.Array, dataToSign.Offset, dataToSign.Count, false);

            using (SHA256 hash = new SHA256CryptoServiceProvider())
            {
                byte[] digest = hash.ComputeHash(istrm);

                istrm.Close();

                return(rsa.SignHash(digest, "SHA256"));
            }
        }
コード例 #5
0
        public bool checkLogin(string username, string password)
        {
            Model1 db = new Model1();

            SHA256 md5 = new SHA256CryptoServiceProvider();

            Byte[] originalBytes = ASCIIEncoding.Default.GetBytes(password);
            Byte[] encodedBytes  = md5.ComputeHash(originalBytes);
            password = BitConverter.ToString(encodedBytes);

            List <Customer> login_finded = (from log in db.Customers where log.UserName == username && log.Password == password select log).ToList();

            if (login_finded.Count == 1)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #6
0
ファイル: AES.cs プロジェクト: BTConca/Encryption
        private byte[][] GetHashKeys(string key)
        {
            byte[][] result = new byte[2][];
            Encoding enc    = Encoding.UTF8;

            SHA256 sha2 = new SHA256CryptoServiceProvider();

            byte[] rawKey = enc.GetBytes(key);
            byte[] rawIV  = enc.GetBytes(key);

            byte[] hashKey = sha2.ComputeHash(rawKey);
            byte[] hashIV  = sha2.ComputeHash(rawIV);

            Array.Resize(ref hashIV, 16);

            result[0] = hashKey;
            result[1] = hashIV;

            str_hashKey = BitConverter.ToString(hashKey);
            return(result);
        }
コード例 #7
0
ファイル: Encrypt.cs プロジェクト: myrest/WanFang
 public static string EncryptTeamGroupSN(int TeamGroupSN)
 {
     if (TeamGroupSN == 0)
     {
         return("");
     }
     else
     {
         string org    = string.Format("SN={0}", TeamGroupSN);
         SHA256 sha256 = new SHA256CryptoServiceProvider(); //建立一個SHA256
         byte[] source = Encoding.Default.GetBytes(org);    //將字串轉為Byte[]
         byte[] crypto = sha256.ComputeHash(source);        //進行SHA256加密
         string result = Convert.ToBase64String(crypto);    //把加密後的字串從Byte[]轉為字串
         result = result.Replace("+", "");
         result = result.Replace("=", "");
         result = result.Replace("/", "");
         string left  = result.Substring(0, 3);
         string right = result.Substring(3, 4);
         return(string.Format("{0}{1}-{2}", left, TeamGroupSN, right).ToUpper());
     }
 }
コード例 #8
0
        public string encriptarPassword(string input)
        {
            SHA256CryptoServiceProvider provider = new SHA256CryptoServiceProvider();


            byte[] inputBytes = Encoding.UTF8.GetBytes(input);

            byte[] hashedBytes = provider.ComputeHash(inputBytes);


            StringBuilder output = new StringBuilder();


            for (int i = 0; i < hashedBytes.Length; i++)
            {
                output.Append(hashedBytes[i].ToString("x2").ToLower());
            }


            return(output.ToString());
        }
コード例 #9
0
 private void DecryptFiveTimes()
 {
     byte[] data = Convert.FromBase64String(textBox2.Text);
     using (SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider())
     {
         byte[] keys = SHA256.ComputeHash(UTF8Encoding.UTF8.GetBytes(OneTimePass));
         using (AesCryptoServiceProvider AES = new AesCryptoServiceProvider()
         {
             Key = keys, Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7
         })
         {
             string initVector      = "#xlZ*SDrxl8iDy%z";
             byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
             AES.IV = initVectorBytes;
             ICryptoTransform transform = AES.CreateDecryptor();
             byte[]           results   = transform.TransformFinalBlock(data, 0, data.Length);
             textBox2.Clear();
             textBox4.Text = UTF8Encoding.UTF8.GetString(results);
         }
     }
 }
コード例 #10
0
        public byte[] createPinHashEnc(string pin, byte[] sharedSecret)
        {
            // AES256-CBC(sharedSecret, IV=0, LEFT(SHA-256(PIN), 16))

            // pinsha = SHA-256(PIN) ->32byte
            byte[] pinbyte = Encoding.ASCII.GetBytes(pin);
            SHA256 sha     = new SHA256CryptoServiceProvider();

            byte[] pinsha = sha.ComputeHash(pinbyte);

            // pinsha16 = LEFT 16(pinsha)
            byte[] pinsha16 = pinsha.ToList().Skip(0).Take(16).ToArray();

            // pinHashEnc = AES256-CBC(sharedSecret, IV=0, pinsha16)
            string key  = Common.BytesToHexString(sharedSecret);
            string data = Common.BytesToHexString(pinsha16);

            var pinHashEnc = AES256CBC.Encrypt(sharedSecret, pinsha16);

            return(pinHashEnc);
        }
コード例 #11
0
ファイル: MembersService.cs プロジェクト: CanoCheng/GuestBook
        /// <summary>
        /// 密碼加密
        /// </summary>
        /// <param name="password">使用者輸入密碼</param>
        /// <returns>(原密碼+TK)後經過SHA256加密</returns>
        public string HashPassword(string password)
        {
            password = string.Format("{0}{1}", password, TK);

            SHA256 sha256 = new SHA256CryptoServiceProvider(); //建立一個SHA256

            byte[] source = Encoding.UTF8.GetBytes(password);  //將字串轉為Byte[]
            byte[] crypto = sha256.ComputeHash(source);        //進行SHA256加密

            string hashpassword = string.Empty;

            foreach (byte bt in crypto)
            {
                if (crypto.Length != 0)
                {
                    hashpassword = hashpassword + bt.ToString("x2");
                }
            }

            return(hashpassword);
        }
コード例 #12
0
        // 文字列のハッシュ値(SHA256)を計算・取得する
        static string GetHashedTextString(string inputString)
        {
            // パスワードをUTF-8エンコードでバイト配列として取り出す
            byte[] byteValues = Encoding.UTF8.GetBytes(inputString);


            // SHA256のハッシュ値を計算する
            SHA256 crypto256 = new SHA256CryptoServiceProvider();

            byte[] hash256Value = crypto256.ComputeHash(byteValues);

            // SHA256の計算結果をUTF8で文字列として取り出す
            StringBuilder hashedText = new StringBuilder();

            for (int i = 0; i < hash256Value.Length; i++)
            {
                // 16進の数値を文字列として取り出す
                hashedText.AppendFormat("{0:X2}", hash256Value[i]);
            }
            return(hashedText.ToString());
        }
コード例 #13
0
        /// <summary>
        /// SHA256加密
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string SHA256_Encryption(string str)//SHA256
        {
            if (!string.IsNullOrEmpty(str))
            {
                //實體化SHA256類別
                SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider();

                //將字串編碼成 UTF8 位元組陣列
                var bytes = System.Text.Encoding.UTF8.GetBytes(str);

                //加密(SHA256) 並且將結果放到ans變數內
                string Ans = BitConverter.ToString(SHA256.ComputeHash(bytes));

                //Return
                return(Ans);
            }
            else
            {
                return("");
            }
        }
コード例 #14
0
ファイル: EventsController.cs プロジェクト: karimsla/Events
        public bool Login([FromBody] dynamic _user)
        {
            IserviceUser spu = new serviceUser();

            SHA256 hash = new SHA256CryptoServiceProvider();

            Byte[] originalBytes = ASCIIEncoding.Default.GetBytes(_user.password.ToString());
            Byte[] encodedBytes  = hash.ComputeHash(originalBytes);
            _user.password = BitConverter.ToString(encodedBytes);


            if (spu.AuthUser(_user.username.ToString(), _user.password.ToString()))
            {
                FormsAuthentication.SetAuthCookie(_user.username.ToString(), false);
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #15
0
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] lpPublicKey       = bytBase64_decode(richTextBox3.Text);                //GSYCGAATBase64Decode(&lpPublicKey, m_lpPublicKeyString, m_dwPublicKeyStringLength)
            byte[] lpEncryptedSecret = bytBase64_decode(richTextBox4.Text);                //GSYCGAATBase64Decode(&lpEncryptedSecret, m_strEncryptedSecretString, iLength)
            byte[] lpPrivatekey      = CS_DH.ComputeKey(BigNumber.FromArray(lpPublicKey)); //lpPublicKeyBN = BN_bin2bn(lpPublicKey, iPublicKeyLength, NULL) + DH_compute_key(lpPrivatekey, lpPublicKeyBN, pDH)

            SHA256 sha256 = new SHA256CryptoServiceProvider();

            byte[] bytSecureHashAlgorithmCode = sha256.ComputeHash(lpPrivatekey);       //GSYCGAATSHA256(bytSecureHashAlgorithmCode, lpPrivatekey, iPrivatekeyLength);
            byte[] bytAESKey = new byte[16];
            Array.Copy(bytSecureHashAlgorithmCode, 16, bytAESKey, 0, bytAESKey.Length); //memcpy(bytAESKey, &(bytSecureHashAlgorithmCode[GSYCGAAT_SHA256_CODE_LENGTH / 2]), GSYCGAAT_AES_KEY_LENGTH);

            SyrisAES.KeySize keysize;
            keysize = SyrisAES.KeySize.Bits128;
            Array.Copy(bytAESKey, 0, SyrisAES.AESKey, 0, SyrisAES.AESKey.Length);
            SyrisAES a = new SyrisAES(keysize);

            byte[] outputByteArray = new byte[16];
            a.UnAES(lpEncryptedSecret, outputByteArray);      //GSYCGAATAES128ECBDecrypt((*lpSecret), lpSecretCipher, GSYCGAAT_AES_UNIT_LENGTH, bytAESKey)
            richTextBox5.Text = ToHexString(outputByteArray); //GSYCGAATBinaryToHEXString(strSecretCodeString, m_bytSecretCode, GSYCGAAT_SECRET_LENGTH);
        }
コード例 #16
0
        private byte[] computeHashKey(string keyData)
        {
            byte[]        keyBytes = Encoding.ASCII.GetBytes(textBoxEncryptionKey.Text);
            HashAlgorithm hashAlgorithm;

            if (comboBoxHashAlgorithm.Text == "SHA-256")
            {
                hashAlgorithm = new SHA256CryptoServiceProvider();
                return(hashAlgorithm.ComputeHash(keyBytes));
            }
            else if (comboBoxHashAlgorithm.Text == "SHA-512")
            {
                hashAlgorithm = new SHA512CryptoServiceProvider();
                return(hashAlgorithm.ComputeHash(keyBytes));
            }
            else
            {
                hashAlgorithm = new MD5CryptoServiceProvider();
                return(hashAlgorithm.ComputeHash(keyBytes));
            }
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: deysnight/dashboard_mirror
        public static string HashPass(string password)
        {
            SHA256 sha = new SHA256CryptoServiceProvider();

            //compute hash from the bytes of text
            sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password));

            //get hash result after compute it
            byte[] result = sha.Hash;

            StringBuilder strBuilder = new StringBuilder();

            for (int i = 0; i < result.Length; i++)
            {
                //change it into 2 hexadecimal digits
                //for each byte
                strBuilder.Append(result[i].ToString("x2"));
            }

            return(strBuilder.ToString());
        }
コード例 #18
0
ファイル: Util.cs プロジェクト: jefrisibarani/tobasaqueue
        private static Byte[] ComputeHash(Byte[] input, Byte[] salt, bool useSalt = true)
        {
            HashAlgorithm algorithm = new SHA256CryptoServiceProvider();

            Byte[] hashedBytes = null;

            if (useSalt)
            {
                // Combine salt and input bytes
                Byte[] saltedInput = new Byte[salt.Length + input.Length];
                salt.CopyTo(saltedInput, 0);
                input.CopyTo(saltedInput, salt.Length);
                hashedBytes = algorithm.ComputeHash(saltedInput);
            }
            else
            {
                hashedBytes = algorithm.ComputeHash(input);
            }

            return(hashedBytes);
        }
コード例 #19
0
        public string D(string password, byte[] encryptedBytes)
        {
            var sha256CryptoServiceProvider = new SHA256CryptoServiceProvider();
            var hash = sha256CryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(password));
            var key  = new byte[KEY_SIZE];
            var iv   = new byte[KEY_SIZE];

            Buffer.BlockCopy(hash, 0, key, 0, KEY_SIZE);
            Buffer.BlockCopy(hash, KEY_SIZE, iv, 0, KEY_SIZE);

            using (var cipher = new AesCryptoServiceProvider().CreateDecryptor(key, iv))
                using (var source = new MemoryStream(encryptedBytes))
                    using (var output = new MemoryStream())
                    {
                        using (var cryptoStream = new CryptoStream(source, cipher, CryptoStreamMode.Read))
                        {
                            cryptoStream.CopyTo(output);
                        }
                        return(Encoding.UTF8.GetString(output.ToArray()));
                    }
        }
コード例 #20
0
ファイル: BUsers.cs プロジェクト: hnjm/PermissionsManager
        private string GetHashed(string password)
        {
            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentException("password is null or empty");
            }

            UTF8Encoding encoder = new UTF8Encoding();
            SHA256CryptoServiceProvider sha256hasher = new SHA256CryptoServiceProvider();

            byte[] hashed256bytes = sha256hasher.ComputeHash(encoder.GetBytes(password));

            StringBuilder output = new StringBuilder();

            for (int i = 0; i < hashed256bytes.Length; i++)
            {
                output.Append(hashed256bytes[i].ToString("X2"));
            }

            return(output.ToString());
        }
コード例 #21
0
ファイル: Hashing.cs プロジェクト: moayyaed/Conforyon
 /// <summary>
 ///
 /// </summary>
 /// <param name="Path"></param>
 /// <param name="Uppercase"></param>
 /// <param name="Error"></param>
 /// <returns></returns>
 public static string FILEtoSHA256(string Path, bool Uppercase = false, string Error = Constants.ErrorMessage)
 {
     try
     {
         if (File.Exists(Path))
         {
             using SHA256 SHA256     = new SHA256CryptoServiceProvider();
             using FileStream Stream = File.OpenRead(Path);
             byte[] Hash = SHA256.ComputeHash(Stream);
             return(Uppercase == false?BitConverter.ToString(Hash).Replace("-", "").ToLowerInvariant() : BitConverter.ToString(Hash).Replace("-", "").ToUpperInvariant());
         }
         else
         {
             return(Error);
         }
     }
     catch
     {
         return(Error + Constants.ErrorTitle + "HH-FTS2!)");
     }
 }
コード例 #22
0
ファイル: AES.cs プロジェクト: leducanh0101/DoAnLTAT
        //=============================================================================

        //private byte[][] GetHashKeys(string key)
        //{
        //    byte[][] result = new byte[2][];
        //    Encoding enc = Encoding.UTF8;

        //    SHA256 sha2 = new SHA256CryptoServiceProvider();

        //    byte[] rawKey = enc.GetBytes(key);
        //    byte[] rawIV = enc.GetBytes(key);
        //    //byte[] rawIV = enc.GetBytes(DateTime.Now.ToString());

        //    byte[] hashKey = sha2.ComputeHash(rawIV);
        //    byte[] hashIV = sha2.ComputeHash(rawIV);

        //    Array.Resize(ref hashIV, 16);

        //    result[0] = hashKey;
        //    result[1] = hashIV;

        //    return result;
        //}
        private byte[][] GetHashKeys(string key, string dateTime)
        {
            byte[][] result = new byte[2][];
            Encoding enc    = Encoding.UTF8;

            SHA256 sha2 = new SHA256CryptoServiceProvider();

            byte[] rawKey = enc.GetBytes(key);
            byte[] rawIV  = enc.GetBytes(dateTime);
            //byte[] rawIV = enc.GetBytes(DateTime.Now.ToString());

            byte[] hashKey = sha2.ComputeHash(rawKey);
            byte[] hashIV  = sha2.ComputeHash(rawIV);

            Array.Resize(ref hashIV, 16);

            result[0] = hashKey;
            result[1] = hashIV;

            return(result);
        }
コード例 #23
0
        /// <summary>
        /// Calculates an integer hash value based on the consistent identity hash of a string.
        /// </summary>
        /// <param name="text">The string to hash.</param>
        /// <returns>An integer hash for the string.</returns>
        public static int CalculateIdHash(string text)
        {
            SHA256 sha  = new SHA256CryptoServiceProvider(); // This is one implementation of the abstract class SHA1.
            int    hash = 0;

            try
            {
                byte[] data   = Encoding.Unicode.GetBytes(text);
                byte[] result = sha.ComputeHash(data);
                for (int i = 0; i < result.Length; i += 4)
                {
                    int tmp = (result[i] << 24) | (result[i + 1] << 16) | (result[i + 2] << 8) | (result[i + 3]);
                    hash = hash ^ tmp;
                }
            }
            finally
            {
                sha.Dispose();
            }
            return(hash);
        }
コード例 #24
0
        public string aesDecrypt(string sourceHexStr, string cryptKey, string cryptIV)
        {
            AesCryptoServiceProvider aes = new AesCryptoServiceProvider();

            MD5CryptoServiceProvider    md5    = new MD5CryptoServiceProvider();        // MD5      Hash計算
            SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider();     // SHA256   Hash計算

            byte[] key = md5.ComputeHash(Encoding.UTF8.GetBytes(cryptKey));             // 計算AES的key
            byte[] iv  = md5.ComputeHash(Encoding.UTF8.GetBytes(cryptIV));              // 計算AES的IV

            byte[] dataByteArray = Enumerable.Range(0, sourceHexStr.Length)
                                   .Where(x => x % 2 == 0)
                                   .Select(x => Convert.ToByte(sourceHexStr.Substring(x, 2), 16))
                                   .ToArray();                     // 將輸入的Hex字串轉為byte
            aes.Key = key;
            aes.IV  = iv;
            ICryptoTransform cryptoTransform = aes.CreateDecryptor(aes.Key, aes.IV);                         // decrypt

            byte[] outputData = cryptoTransform.TransformFinalBlock(dataByteArray, 0, dataByteArray.Length); //將decrypt後的array存到output
            return(Encoding.UTF8.GetString(outputData));                                                     //轉成UTF的string return
        }
コード例 #25
0
        private byte[][] GetHashKeys()
        {
            var key    = _encryptionKeyProvider.GetKey();
            var result = new byte[2][];
            var enc    = Encoding.UTF8;

            var sha2 = new SHA256CryptoServiceProvider();

            var rawKey = enc.GetBytes(key);
            var rawIV  = enc.GetBytes(key);

            var hashKey = sha2.ComputeHash(rawKey);
            var hashIV  = sha2.ComputeHash(rawIV);

            Array.Resize(ref hashIV, 16);

            result[0] = hashKey;
            result[1] = hashIV;

            return(result);
        }
コード例 #26
0
        private void Photo_Click(object sender, RoutedEventArgs e)
        {
            try {
                GetFileData(out theBackendData.photoFile);

                if (theBackendData.hashType == "SHA1")
                {
                    SHA1 sha = new SHA1CryptoServiceProvider();
                    theBackendData.photo_hash = sha.ComputeHash(theBackendData.photoFile);
                }
                else if (theBackendData.hashType == "SHA256")
                {
                    SHA256 sha = new SHA256CryptoServiceProvider();
                    theBackendData.photo_hash = sha.ComputeHash(theBackendData.photoFile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Error message: " + ex.Message);
            }
        }
コード例 #27
0
        /// <summary>
        /// Signs JWT token using the private key and returns the serialized assertion.
        /// </summary>
        /// <param name="payload">the JWT payload to sign.</param>
        private string CreateAssertionFromPayload(JsonWebSignature.Payload payload)
        {
            string serializedHeader  = CreateSerializedHeader();
            string serializedPayload = NewtonsoftJsonSerializer.Instance.Serialize(payload);

            StringBuilder assertion = new StringBuilder();

            assertion.Append(UrlSafeBase64Encode(serializedHeader))
            .Append(".")
            .Append(UrlSafeBase64Encode(serializedPayload));

            // Sign the header and the payload.
            var hashAlg = new SHA256CryptoServiceProvider();

            byte[] assertionHash = hashAlg.ComputeHash(Encoding.ASCII.GetBytes(assertion.ToString()));

            var signature = UrlSafeBase64Encode(key.SignHash(assertionHash, "2.16.840.1.101.3.4.2.1" /* SHA256 OIG */));

            assertion.Append(".").Append(signature);
            return(assertion.ToString());
        }
コード例 #28
0
        /// <summary>
        /// 任意のアルゴリズムでハッシュ値を取得し、16 進数表記文字列として返します。
        /// </summary>
        /// <param name="originalString">
        /// ハッシュ値を取得する文字列。
        /// </param>
        /// <param name="crypto">
        /// ハッシュ値を求める任意の <see cref="HashAlgorithm"/>。<c>null</c> の場合、<see cref="SHA256CryptoServiceProvider"/> を利用します。
        /// </param>
        /// <param name="encoding">
        /// ハッシュ値を取得する際の文字コード。<c>null</c> の場合、<see cref="Encoding.UTF8"/> でエンコーディングします。
        /// </param>
        /// <returns>
        /// ハッシュ値を 16 進数表記文字列化した文字列。
        /// </returns>
        private static string ComputeHashString(this string originalString, HashAlgorithm crypto, Encoding encoding)
        {
            if (string.IsNullOrEmpty(originalString))
            {
                return(null);
            }

            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            if (crypto == null)
            {
                crypto = new SHA256CryptoServiceProvider();
            }

            byte[] source = encoding.GetBytes(originalString);

            return(crypto.ComputeHash(source).ToHexString());
        }
コード例 #29
0
        public byte[] E(string password, string input)
        {
            var sha256CryptoServiceProvider = new SHA256CryptoServiceProvider();
            var hash = sha256CryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(password));
            var key  = new byte[KEY_SIZE];
            var iv   = new byte[KEY_SIZE];

            Buffer.BlockCopy(hash, 0, key, 0, KEY_SIZE);
            Buffer.BlockCopy(hash, KEY_SIZE, iv, 0, KEY_SIZE);

            using (var cipher = new AesCryptoServiceProvider().CreateEncryptor(key, iv))
                using (var output = new MemoryStream())
                {
                    using (var cryptoStream = new CryptoStream(output, cipher, CryptoStreamMode.Write))
                    {
                        var inputBytes = Encoding.UTF8.GetBytes(input);
                        cryptoStream.Write(inputBytes, 0, inputBytes.Length);
                    }
                    return(output.ToArray());
                }
        }
コード例 #30
0
ファイル: InstanceIdUtility.cs プロジェクト: shanselman/kudu
        internal static string GetInstanceIdInternal(HttpContextBase context, string machineName)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            string identifier = context.Request.ServerVariables["LOCAL_ADDR"];

            if (String.IsNullOrEmpty(identifier))
            {
                identifier = machineName;
            }

            using (var sha1 = new SHA256CryptoServiceProvider())
            {
                byte[] tokenBytes = Encoding.Unicode.GetBytes(identifier);
                byte[] hashBytes  = sha1.ComputeHash(tokenBytes);

                return(ConvertToString(hashBytes));
            }
        }
コード例 #31
0
ファイル: StringExtensions.cs プロジェクト: SimplyJpk/UDC-Bot
        public static string GetSHA256(this string input)
        {
            var hash = new SHA256CryptoServiceProvider();

            // Convert the input string to a byte array and compute the hash.
            byte[] data = hash.ComputeHash(Encoding.UTF8.GetBytes(input));

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sb = new StringBuilder();

            // Loop through each byte of the hashed data
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sb.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string.
            return(sb.ToString());
        }
            public async Task AnalyzeDocumentAsync(Document document, SyntaxNode bodyOpt, InvocationReasons reasons, CancellationToken cancellationToken)
            {
                try
                {
                    // do nothing if this document is not currently open.
                    // to prevent perf from getting too poor for large projects, only examine open documents.
                    if (!document.IsOpen())
                    {
                        return;
                    }

                    // Only analyzing C# for now
                    if (document.Project.Language != LanguageNames.CSharp)
                    {
                        return;
                    }

                    List<CompilationErrorDetails> errorDetails = await _errorDetailDiscoverer.GetCompilationErrorDetails(document, bodyOpt, cancellationToken).ConfigureAwait(false);

                    var errorsToReport = _errorDetailCache.GetErrorsToReportAndRecordErrors(document.Id, errorDetails);
                    if (errorsToReport != null)
                    {
                        using (var hashProvider = new SHA256CryptoServiceProvider())
                        {
                            foreach (CompilationErrorDetails errorDetail in errorsToReport)
                            {
                                var telemetryEvent = TelemetryHelper.TelemetryService.CreateEvent(TelemetryEventPath);
                                telemetryEvent.SetStringProperty(TelemetryErrorId, errorDetail.ErrorId);

                                string projectGuid = _projectGuidCache.GetProjectGuidFromProjectPath(document.Project.FilePath);
                                telemetryEvent.SetStringProperty(TelemetryProjectGuid, string.IsNullOrEmpty(projectGuid) ? UnspecifiedProjectGuid : projectGuid.ToString());

                                if (!string.IsNullOrEmpty(errorDetail.UnresolvedMemberName))
                                {
                                    telemetryEvent.SetStringProperty(TelemetryUnresolvedMemberName, GetHashedString(errorDetail.UnresolvedMemberName, hashProvider));
                                }

                                if (!string.IsNullOrEmpty(errorDetail.LeftExpressionDocId))
                                {
                                    telemetryEvent.SetStringProperty(TelemetryLeftExpressionDocId, GetHashedString(errorDetail.LeftExpressionDocId, hashProvider));
                                }

                                if (!IsArrayNullOrEmpty(errorDetail.LeftExpressionBaseTypeDocIds))
                                {
                                    string telemetryBaseTypes = string.Join(";", errorDetail.LeftExpressionBaseTypeDocIds.Select(docId => GetHashedString(docId, hashProvider)));
                                    telemetryEvent.SetStringProperty(TelemetryBaseTypes, telemetryBaseTypes);
                                }

                                if (!IsArrayNullOrEmpty(errorDetail.GenericArguments))
                                {
                                    string telemetryGenericArguments = string.Join(";", errorDetail.GenericArguments.Select(docId => GetHashedString(docId, hashProvider)));
                                    telemetryEvent.SetStringProperty(TelemetryGenericArguments, telemetryGenericArguments);
                                }

                                if (!string.IsNullOrEmpty(errorDetail.MethodName))
                                {
                                    telemetryEvent.SetStringProperty(TelemetryMethodName, GetHashedString(errorDetail.MethodName, hashProvider));
                                }

                                if (!IsArrayNullOrEmpty(errorDetail.ArgumentTypes))
                                {
                                    string telemetryMisMatchedArgumentTypeDocIds = string.Join(";", errorDetail.ArgumentTypes.Select(docId => GetHashedString(docId, hashProvider)));
                                    telemetryEvent.SetStringProperty(TelemetryMismatchedArgumentTypeDocIds, telemetryMisMatchedArgumentTypeDocIds);
                                }

                                TelemetryHelper.DefaultTelemetrySession.PostEvent(telemetryEvent);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    // The telemetry service itself can throw.
                    // So, to be very careful, put this in a try/catch too.
                    try
                    {
                        var exceptionEvent = TelemetryHelper.TelemetryService.CreateEvent(TelemetryExceptionEventPath);
                        exceptionEvent.SetStringProperty("Type", e.GetTypeDisplayName());
                        exceptionEvent.SetStringProperty("Message", e.Message);
                        exceptionEvent.SetStringProperty("StackTrace", e.StackTrace);
                        TelemetryHelper.DefaultTelemetrySession.PostEvent(exceptionEvent);
                    }
                    catch
                    {
                    }
                }
            }
コード例 #33
0
		/// <summary>
		/// Signs JWT token using the private key and returns the serialized assertion.
		/// </summary>
		/// <param name="payload">the JWT payload to sign.</param>
		private string CreateAssertionFromPayload(JsonWebSignature.Payload payload)
		{
			string serializedHeader = CreateSerializedHeader();
			string serializedPayload = NewtonsoftJsonSerializer.Instance.Serialize(payload);

			StringBuilder assertion = new StringBuilder();
			assertion.Append(UrlSafeBase64Encode(serializedHeader))
				.Append(".")
				.Append(UrlSafeBase64Encode(serializedPayload));

			// Sign the header and the payload.
			var hashAlg = new SHA256CryptoServiceProvider();
			byte[] assertionHash = hashAlg.ComputeHash(Encoding.ASCII.GetBytes(assertion.ToString()));

			var signature = UrlSafeBase64Encode(key.SignHash(assertionHash, "2.16.840.1.101.3.4.2.1" /* SHA256 OIG */)); 
			assertion.Append(".").Append(signature);
			return assertion.ToString();
		}