public static string CalcMD5(string input) { byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(input); byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); return(BitConverter.ToString(hashedBytes).Replace("-", "").ToLower()); }
private void secondHandshake() { byte [] preRequest = new byte [1]; byte [] request = new byte [24]; byte [] response = request; preRequest [0] = TypeNewconn; ulong privateKey; ulong publicKey; DH64 dh64 = new DH64(); dh64.KeyPair(out privateKey, out publicKey); using (MemoryStream ms = new MemoryStream(request, 0, 8)) { using (BinaryWriter w = new BinaryWriter(ms)) { w.Write(publicKey); } } _BaseStream.Write(preRequest, 0, preRequest.Length); _BaseStream.Write(request, 0, 8); for (int n = 24; n > 0;) { int x = _BaseStream.Read(response, 24 - n, n); if (x == 0) { throw new EndOfStreamException(); } n -= x; } ulong challengeCode = 0; using (MemoryStream ms = new MemoryStream(response, 0, 24)) { using (BinaryReader r = new BinaryReader(ms)) { ulong serverPublicKey = r.ReadUInt64(); ulong secret = dh64.Secret(privateKey, serverPublicKey); using (MemoryStream ms2 = new MemoryStream(_Key)) { using (BinaryWriter w = new BinaryWriter(ms2)) { w.Write(secret); } } _ReadCipher = new RC4Cipher(_Key); _WriteCipher = new RC4Cipher(_Key); _ReadCipher.XORKeyStream(response, 8, response, 8, 8); _ID = r.ReadUInt64(); using (MemoryStream ms2 = new MemoryStream(request, 0, 16)) { using (BinaryWriter w = new BinaryWriter(ms2)) { w.Write(response, 16, 8); w.Write(_Key); MD5 md5 = MD5CryptoServiceProvider.Create(); byte [] hash = md5.ComputeHash(request, 0, 16); Buffer.BlockCopy(hash, 0, request, 0, hash.Length); _BaseStream.Write(request, 0, 16); } } } } }
static void Main(string[] args) { //Console.Title = "DeviceVM Version File Generator"; if (args.Length == 0 || args[0] == "help" || args[0] == "?") { Console.WriteLine("DeviceVM SplashTop Version File Generator"); Console.WriteLine("Usage:"); Console.WriteLine(" DVM-Version.exe SPLASHTOP_FOLDER OUTPUTFILE [VERSION] [DATE]"); Console.WriteLine(" [DATE]: DD/MM/YYYY"); } else { string src = args[0]; string target = args[1]; Version splashVersion = null; DateTime splashDate = DateTime.Now; Int32 binaryMagic = 0x00000006; Int32 archiveMagic = 0x00000003; Int32 kernelMagic = 0x00000002; Int32 dataMagic = 0x00000005; if (args.Length >= 3) { splashVersion = new Version(args[2]); } if (args.Length == 4) { string[] vals = args[3].Split('/'); splashDate = new DateTime(Convert.ToInt32(vals[2]), Convert.ToInt32(vals[1]), Convert.ToInt32(vals[0])); } if (!Directory.Exists(src)) { Console.WriteLine("Specified Image does not exist"); return; } Console.WriteLine("DeviceVM SplashTop Version File Generator"); Console.WriteLine("Source Directory: " + args[0]); Console.WriteLine("Target File: " + args[1]); Console.WriteLine(); if (splashVersion == null) { Console.WriteLine("Please Enter the Version [x.x.x.x]:"); splashVersion = new Version(Console.ReadLine()); } Console.WriteLine("Generating Header"); byte[] file = new byte[0]; CreationFunctions.AddUTF8String(ref file, "_DeviceVM Inc._", 16); //[UTF8] (16) - Company CreationFunctions.AddUTF8String(ref file, splashDate.ToString("yyyyMMdd"), 8); //[UTF8] (8) - Date CreationFunctions.AddByte(ref file, (byte)splashVersion.Major); //[1] - Major CreationFunctions.AddByte(ref file, (byte)splashVersion.Minor); //[1] - Minor CreationFunctions.AddByte(ref file, (byte)splashVersion.Build); //[1] - Build CreationFunctions.AddByte(ref file, (byte)splashVersion.Revision); //[1] - Rev CreationFunctions.AddInt32(ref file, 0x00000075); //[4] - Magic MD5 md5sum = MD5CryptoServiceProvider.Create(); //Files Console.WriteLine(); Console.WriteLine("Generating File Entries"); foreach (string fileInfo in Directory.GetFiles(src)) { FileInfo fi = new FileInfo(fileInfo); Console.WriteLine("\t" + fi.Name); CreationFunctions.AddUTF8String(ref file, fi.Name, 32); //[UTF8] - File Name CreationFunctions.AddUTF8String(ref file, splashDate.ToString("yyyyMMdd"), 8); //[UTF8] - Date (yyyyMMdd) if (fi.Name == "kernel.bin") { CreationFunctions.AddInt32(ref file, kernelMagic); //[4] - Magic } else if (fi.Extension == ".sqx") { CreationFunctions.AddInt32(ref file, archiveMagic); //[4] - Magic } else if (fi.Extension == ".dat" || fi.Extension == ".date" || fi.Extension == ".md5") { CreationFunctions.AddInt32(ref file, dataMagic); //[4] - Magic } else if (fi.Extension == ".bin" || fi.Extension == ".idx") { CreationFunctions.AddInt32(ref file, binaryMagic); //[4] - Magic } else { CreationFunctions.AddInt32(ref file, binaryMagic); //[4] - Magic } CreationFunctions.AddInt32(ref file, 0x0); //[4] - Padding CreationFunctions.AddInt32(ref file, (int)fi.Length); //[4] - File Size CreationFunctions.AddData(ref file, new byte[12]); //[12] - Padding FileStream fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read); CreationFunctions.AddData(ref file, md5sum.ComputeHash(fs)); //[16] - MD5 fs.Close(); } FileStream outFS = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write); outFS.Write(file, 0, file.Length); outFS.Close(); Console.WriteLine("Complete"); } }
public SkinProvider() { Md5 = MD5CryptoServiceProvider.Create(); }
public static IHashAlgorithm MD5() { return(new HashAlgorithmWrapper("MD5", MD5CryptoServiceProvider.Create())); }
internal static MD5 CreateMD5() { return(MD5CryptoServiceProvider.Create()); }
protected void BuildSSO() { try { xmlPublicKey = GetPublicKey(); xmlPrivateKey = GetPrivateKey(); if (xmlPublicKey == null) { LogError("Unable to retrieve Public Key"); return; } if (xmlPrivateKey == null) { LogError("Unable to retrieve Private Key"); return; } CspParameters Sendercp = new CspParameters(); RSACryptoServiceProvider SenderRSA = null; try { Sendercp.Flags = CspProviderFlags.UseMachineKeyStore; SenderRSA = new RSACryptoServiceProvider(Sendercp); SenderRSA.FromXmlString(xmlPrivateKey.OuterXml); } catch (Exception ex) { throw; //return; } //finally //{ // SenderRSA.Clear(); // //LogError("Error while constructing the PrivateKey: " + ex.Message); //} CspParameters Receivercp = new CspParameters(); RSACryptoServiceProvider ReceiverRSA = null; try { Receivercp.Flags = CspProviderFlags.UseMachineKeyStore; ReceiverRSA = new RSACryptoServiceProvider(Receivercp); ReceiverRSA.FromXmlString(xmlPublicKey.OuterXml); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // //LogError("Error while constructing the PublicKey: " + ex.Message); // //return; //} string tpayload = AssemblePayload(); byte[] TripleDESKey = null; byte[] encryptedData = SSOEncryption.TripleDESEncrypt(Encoding.ASCII.GetBytes(tpayload), out TripleDESKey); string base64enc = Convert.ToBase64String(encryptedData); string plainsig = base64enc + _clientID + _serverID; MD5 md = null; byte[] buffer = null; byte[] hash = null; try { md = MD5CryptoServiceProvider.Create(); //Convert the string into an array of bytes. buffer = Encoding.ASCII.GetBytes(plainsig); //Create the hash value from the array of bytes. hash = md.ComputeHash(buffer); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // SenderRSA.Clear(); // //LogError("Error Computing Hash: " + ex.Message); //} byte[] signed; byte[] cipher; try { signed = SenderRSA.SignHash(hash, CryptoConfig.MapNameToOID("MD5")); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // SenderRSA.Clear(); // //LogError("Error Signing Hash: " + ex.Message); // //return; //} try { cipher = ReceiverRSA.Encrypt(TripleDESKey, false); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // SenderRSA.Clear(); // //LogError("Error Encrypting Symmetric Key: " + ex.Message); // //return; //} string base64sign = Convert.ToBase64String(signed); string base64cipher = Convert.ToBase64String(cipher); _payload = webcode(base64enc); _signature = webcode(base64sign); //byte[] EncBinarySig = Convert.FromBase64String(webDecode(_signature)); _cipher = webcode(base64cipher); ReceiverRSA.Clear(); SenderRSA.Clear(); } catch (Exception ex) { //Trace.WriteLine(ex.Message); throw; //throw new Exception("Error while Building the SSO Package: \n" + ex.Message); } }
public STRandom( ) { mMD5 = MD5CryptoServiceProvider.Create( ); }
/// <summary>ハッシュ(キー無し)サービスプロバイダの生成</summary> /// <param name="eha">ハッシュ(キー無し)サービスプロバイダの列挙型</param> /// <returns>ハッシュ(キー無し)サービスプロバイダ</returns> /// <remarks> /// EnumHashAlgorithmから、HashAlgorithmを生成するために追加。 /// HashAlgorithm.Create(HashNameConst.SHA256) は .NET Core 2 で動作せず。 /// - KeyedHashAlgorithm.Create("HMACSHA1") throw PNSE (on .NET Core 2 /// https://github.com/dotnet/standard/issues/530#issuecomment-375043416 /// </remarks> public static HashAlgorithm CreateHashAlgorithmSP(EnumHashAlgorithm eha) { // ハッシュ(キー無し)サービスプロバイダ HashAlgorithm ha = null; if (eha == EnumHashAlgorithm.Default) { // 既定の暗号化サービスプロバイダ ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703) } #region MD5 else if (eha == EnumHashAlgorithm.MD5_CSP) { // MD5CryptoServiceProviderサービスプロバイダ ha = MD5CryptoServiceProvider.Create(); // devps(1703) } #if NETSTD #else else if (eha == EnumHashAlgorithm.MD5_CNG) { // MD5Cngサービスプロバイダ ha = MD5Cng.Create(); // devps(1703) } #endif #endregion #region RIPEMD160 else if (eha == EnumHashAlgorithm.RIPEMD160_M) { #if NETSTD ha = null; // BouncyCastleを使用する。 #else // RIPEMD160Managedサービスプロバイダ ha = RIPEMD160Managed.Create(); // devps(1703) #endif } #endregion #region SHA1 else if (eha == EnumHashAlgorithm.SHA1_CSP) { // SHA1CryptoServiceProviderサービスプロバイダ ha = SHA1CryptoServiceProvider.Create(); // devps(1703) } #if NETSTD #else else if (eha == EnumHashAlgorithm.SHA1_CNG) { // SHA1Cngサービスプロバイダ ha = SHA1Cng.Create(); // devps(1703) } #endif else if (eha == EnumHashAlgorithm.SHA1_M) { // SHA1Managedサービスプロバイダ ha = SHA1Managed.Create(); // devps(1703) } #endregion #region SHA256 else if (eha == EnumHashAlgorithm.SHA256_CSP) { // SHA256CryptoServiceProviderサービスプロバイダ ha = SHA256CryptoServiceProvider.Create(); // devps(1703) } #if NETSTD #else else if (eha == EnumHashAlgorithm.SHA256_CNG) { // SHA256Cngサービスプロバイダ ha = SHA256Cng.Create(); // devps(1703) } #endif else if (eha == EnumHashAlgorithm.SHA256_M) { // SHA256Managedサービスプロバイダ ha = SHA256Managed.Create(); // devps(1703) } #endregion #region SHA384 else if (eha == EnumHashAlgorithm.SHA384_CSP) { // SHA384CryptoServiceProviderサービスプロバイダ ha = SHA384CryptoServiceProvider.Create(); // devps(1703) } #if NETSTD #else else if (eha == EnumHashAlgorithm.SHA384_CNG) { // SHA384Cngサービスプロバイダ ha = SHA384Cng.Create(); // devps(1703) } #endif else if (eha == EnumHashAlgorithm.SHA384_M) { // SHA384Managedサービスプロバイダ ha = SHA384Managed.Create(); // devps(1703) } #endregion #region SHA512 else if (eha == EnumHashAlgorithm.SHA512_CSP) { // SHA512CryptoServiceProviderサービスプロバイダ ha = SHA512CryptoServiceProvider.Create(); // devps(1703) } #if NETSTD #else else if (eha == EnumHashAlgorithm.SHA512_CNG) { // SHA512Cngサービスプロバイダ ha = SHA512Cng.Create(); // devps(1703) } #endif else if (eha == EnumHashAlgorithm.SHA512_M) { // SHA512Managedサービスプロバイダ ha = SHA512Managed.Create(); // devps(1703) } #endregion else { // 既定の暗号化サービスプロバイダ ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703) } return(ha); }
/// <summary> /// MD5s the specified org. /// </summary> /// <param name="org">The org.</param> /// <returns></returns> public static string Md5(string org) { byte[] bytes = MD5CryptoServiceProvider.Create().ComputeHash(Encoding.Unicode.GetBytes(org)); return(Convert.ToBase64String(bytes)); }
private bool TryReconnInternal() { _BaseStream.Close(); NetworkStream badStream = _BaseStream; _ReconnLock.ReleaseReaderLock(); _ReconnLock.AcquireWriterLock(-1); try { if (badStream != _BaseStream) { return(true); } byte[] request = new byte[24 + 16]; byte[] response = new byte[16]; using (MemoryStream ms = new MemoryStream(request)) { using (BinaryWriter bw = new BinaryWriter(ms)) { bw.Write(_ID); bw.Write(_WriteCount); bw.Write(_ReadCount); bw.Write(_Key); } } MD5 md5 = MD5CryptoServiceProvider.Create(); byte[] hash = md5.ComputeHash(request, 0, 32); Buffer.BlockCopy(hash, 0, request, 24, hash.Length); for (int i = 0; !_Closed; i++) { if (i > 0) { Thread.Sleep(3000); } try { TcpClient client = new TcpClient(_Host, _Port); NetworkStream stream = client.GetStream(); stream.Write(request, 0, request.Length); for (int n = response.Length; n > 0;) { n -= stream.Read(response, response.Length - n, n); } ulong writeCount = 0; ulong readCount = 0; using (MemoryStream ms = new MemoryStream(response)) { using (BinaryReader br = new BinaryReader(ms)) { writeCount = br.ReadUInt64(); readCount = br.ReadUInt64(); } } if (DoReconn(stream, writeCount, readCount)) { return(true); } } catch { continue; } } } finally { _ReconnLock.ReleaseWriterLock(); _ReconnLock.AcquireReaderLock(-1); } return(false); }
private string CreateMD5(string tomd5) { byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(tomd5); byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); return(BitConverter.ToString(hashedBytes).Replace("-", "").ToLower()); }
/// <summary> /// Computes the Hash code of a string. /// </summary> /// <param name="input">The string.</param> /// <returns>The Hash code.</returns> public static byte[] ComputeBytes(string input) { MD5 md5 = MD5CryptoServiceProvider.Create(); return(md5.ComputeHash(Encoding.ASCII.GetBytes(input))); }
private void handshake() { byte[] preRequest = new byte[1]; byte[] request = new byte[24]; byte[] response = request; preRequest[0] = TypeNewconn; ulong privateKey; ulong publicKey; DH64 dh64 = new DH64(); dh64.KeyPair(out privateKey, out publicKey); using (MemoryStream ms = new MemoryStream(request, 0, 8)) { using (BinaryWriter w = new BinaryWriter(ms)) { w.Write(publicKey); } } TcpClient client = new TcpClient(_Host.AddressFamily); var ar = client.BeginConnect(_Host, _Port, null, null); ar.AsyncWaitHandle.WaitOne(new TimeSpan(0, 0, 0, 0, ConnectTimeout)); if (!ar.IsCompleted) { throw new TimeoutException(); } client.EndConnect(ar); setBaseStream(client.GetStream()); _BaseStream.Write(preRequest, 0, preRequest.Length); _BaseStream.Write(request, 0, 8); for (int n = 24; n > 0;) { int x = _BaseStream.Read(response, 24 - n, n); if (x == 0) { throw new EndOfStreamException(); } n -= x; } ulong challengeCode = 0; using (MemoryStream ms = new MemoryStream(response, 0, 24)) { using (BinaryReader r = new BinaryReader(ms)) { ulong serverPublicKey = r.ReadUInt64(); ulong secret = dh64.Secret(privateKey, serverPublicKey); using (MemoryStream ms2 = new MemoryStream(_Key)) { using (BinaryWriter w = new BinaryWriter(ms2)) { w.Write(secret); } } _ReadCipher = new RC4Cipher(_Key); _WriteCipher = new RC4Cipher(_Key); _ReadCipher.XORKeyStream(response, 8, response, 8, 8); _ID = r.ReadUInt64(); using (MemoryStream ms2 = new MemoryStream(request, 0, 16)) { using (BinaryWriter w = new BinaryWriter(ms2)) { w.Write(response, 16, 8); w.Write(_Key); MD5 md5 = MD5CryptoServiceProvider.Create(); byte[] hash = md5.ComputeHash(request, 0, 16); Buffer.BlockCopy(hash, 0, request, 0, hash.Length); _BaseStream.Write(request, 0, 16); } } } } }
public void DisAssemble() { try { xmlPublicKey = GetPublicKey(); xmlPrivateKey = GetPrivateKey(); if (xmlPublicKey == null) { LogError("Unable to retrieve Public Key"); return; } if (xmlPrivateKey == null) { LogError("Unable to retrieve Private Key"); return; } CspParameters Sendercp = new CspParameters(); RSACryptoServiceProvider SenderRSA = null; try { Sendercp.Flags = CspProviderFlags.UseMachineKeyStore; SenderRSA = new RSACryptoServiceProvider(Sendercp); SenderRSA.FromXmlString(xmlPublicKey.OuterXml); } catch (Exception ex) { throw; } //finally //{ // SenderRSA.Clear(); // //LogError("Error while constructing the PublicKey: " + ex.Message); // //return; //} CspParameters Receivercp = new CspParameters(); RSACryptoServiceProvider ReceiverRSA = null; try { Receivercp.Flags = CspProviderFlags.UseMachineKeyStore; ReceiverRSA = new RSACryptoServiceProvider(Receivercp); ReceiverRSA.FromXmlString(xmlPrivateKey.OuterXml); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // //LogError("Error while constructing the PrivateKey: " + ex.Message); // //return; //} byte[] EncBinarySig = Convert.FromBase64String(webDecode(_signature)); //byte[] transmittedHash = SenderRSA.Decrypt(EncBinarySig,false); string nameValuePairText = webDecode(_payload); string transmittedMsg = nameValuePairText + _clientID + _serverID; string calculatedHash = nameValuePairText + ClientID + ServerID; byte[] hash; byte[] signed = null; signed = Convert.FromBase64String(webDecode(_signature)); MD5 md2 = null; try { md2 = MD5CryptoServiceProvider.Create(); //Convert the string into an array of bytes. byte[] buffer = Encoding.ASCII.GetBytes(calculatedHash); //Create the hash value from the array of bytes. hash = md2.ComputeHash(buffer); } catch (Exception ex) { throw; } //finally //{ // ReceiverRSA.Clear(); // SenderRSA.Clear(); // //LogError("Error Computing Hash: " + ex.Message); // //return; //} if (SenderRSA.VerifyHash(hash, CryptoConfig.MapNameToOID("MD5"), signed)) { byte[] TripleDESKey = null; string encryptedKeyText = webDecode(_cipher); byte[] encryptedKeyBinary = Convert.FromBase64String(encryptedKeyText); TripleDESKey = ReceiverRSA.Decrypt(encryptedKeyBinary, false); byte[] nameValuePairBinary = Convert.FromBase64String(nameValuePairText); byte[] nameValuePair = SSOEncryption.TripleDESDecrypt(nameValuePairBinary, TripleDESKey, null); string ClearTextPayload = Encoding.ASCII.GetString(nameValuePair); //LogError("Error matching Computed and Transmitted Hash"); //return; } ReceiverRSA.Clear(); SenderRSA.Clear(); } catch (Exception ex) { throw; //Trace.WriteLine(ex.Message); //throw new Exception("Error while Building the SSO Package: \n" + ex.Message); } }
private bool tryReconn() { _BaseStream.Close(); NetworkStream badStream = _BaseStream; _ReconnLock.ReleaseReaderLock(); _ReconnLock.AcquireWriterLock(-1); try { if (badStream != _BaseStream) { return(true); } byte[] preRequest = new byte[1]; byte[] request = new byte[24 + 16]; byte[] response = new byte[24]; preRequest[0] = TypeReconn; using (MemoryStream ms = new MemoryStream(request)) { using (BinaryWriter w = new BinaryWriter(ms)) { w.Write(_ID); w.Write(_WriterCount); w.Write(_ReadCount + _Rereader.Count); w.Write(_Key); } } MD5 md5 = MD5CryptoServiceProvider.Create(); byte[] hash = md5.ComputeHash(request, 0, 32); Buffer.BlockCopy(hash, 0, request, 24, hash.Length); for (int i = 0; !_Closed; i++) { if (i > 0) { Thread.Sleep(3000); } try { TcpClient client = new TcpClient(_Host.AddressFamily); var ar = client.BeginConnect(_Host, _Port, null, null); ar.AsyncWaitHandle.WaitOne(new TimeSpan(0, 0, 0, 0, ConnectTimeout)); if (!ar.IsCompleted) { throw new TimeoutException(); } client.EndConnect(ar); NetworkStream stream = client.GetStream(); stream.Write(preRequest, 0, preRequest.Length); stream.Write(request, 0, request.Length); for (int n = response.Length; n > 0;) { int x = stream.Read(response, response.Length - n, n); if (x == 0) { throw new EndOfStreamException(); } n -= x; } ulong writeCount = 0; ulong readCount = 0; ulong challengeCode = 0; using (MemoryStream ms = new MemoryStream(response)) { using (BinaryReader r = new BinaryReader(ms)) { writeCount = r.ReadUInt64(); readCount = r.ReadUInt64(); challengeCode = r.ReadUInt64(); if (writeCount == 0 && readCount == 0 && challengeCode == 0) { stream.Close(); return(false); } } } // reconn check using (MemoryStream ms = new MemoryStream(request, 0, 16)) { using (BinaryWriter w = new BinaryWriter(ms)) { w.Write(response, 16, 8); w.Write(_Key); } } hash = md5.ComputeHash(request, 0, 16); Buffer.BlockCopy(hash, 0, request, 0, hash.Length); stream.Write(request, 0, 16); if (writeCount < _ReadCount) { return(false); } if (_WriterCount < readCount) { return(false); } if (doReconn(stream, writeCount, readCount)) { return(true); } } catch { continue; } } } finally { _ReconnLock.ReleaseWriterLock(); _ReconnLock.AcquireReaderLock(-1); } return(false); }
public static string GetJsonPath(string url) { return(Path.Combine(Directory.GetCurrentDirectory(), "History", "Youtube-DL", BitConverter.ToString(MD5CryptoServiceProvider.Create().ComputeHash(Encoding.UTF8.GetBytes(url))).Replace("-", "").ToLower())); }