static void MYThread(object obj) { FileInfo NextFile = (FileInfo)obj; if (NextFile.Name.Contains("txt")) { string[] all_pass = File.ReadAllLines(NextFile.FullName); JObject encrypted = JObject.Parse(fixture_old); int ks = 256, iter = 1000, ts = 64; JsonEncrypt jsonEncrypt = new JsonEncrypt(ks, iter, ts); //string key = "12|qwe949461747"; List <string> base64_pass = new List <string>(); foreach (string pass in all_pass) { Org.BouncyCastle.Crypto.Parameters.KeyParameter new_key = jsonEncrypt.CreateKey(pass.Length + "|" + pass, encrypted); System.Text.Encoding encode = System.Text.Encoding.ASCII; // string strPath = Convert.ToBase64String(new_key.GetKey()); base64_pass.Add(pass.Length + "|" + pass + "#" + Convert.ToBase64String(new_key.GetKey())); } string base64_pass_dir = "./base64_pass/"; if (!Directory.Exists(base64_pass_dir)) { Directory.CreateDirectory(base64_pass_dir); } File.WriteAllLines(base64_pass_dir + NextFile.Name, base64_pass); } }
public int ZJ_Hmac_SM3(string key, string secret, string unix_timestamp, string request_body, out string value) { try { var stringToSign = $"{unix_timestamp}\n{ request_body}"; byte[] msg1 = Encoding.UTF8.GetBytes(stringToSign); byte[] key1 = Encoding.UTF8.GetBytes(secret); Org.BouncyCastle.Crypto.Parameters.KeyParameter keyParameter = new Org.BouncyCastle.Crypto.Parameters.KeyParameter(key1); Org.BouncyCastle.Crypto.Digests.SM3Digest sm3 = new Org.BouncyCastle.Crypto.Digests.SM3Digest(); Org.BouncyCastle.Crypto.Macs.HMac mac = new Org.BouncyCastle.Crypto.Macs.HMac(sm3);//带密钥的杂凑算法 mac.Init(keyParameter); mac.BlockUpdate(msg1, 0, msg1.Length); byte[] result = new byte[mac.GetMacSize()]; mac.DoFinal(result, 0); value = new UTF8Encoding().GetString(Org.BouncyCastle.Utilities.Encoders.Hex.Encode(result)); return(0); } catch (Exception ex) { value = ex.Message; return(1); } }
internal static byte[] HmacSha512Digest(byte[] input, int offset, int length, byte[] hmacKey) { var output = new byte[64]; HMac hmacsha512Obj = new HMac(new Sha512Digest()); var param = new Org.BouncyCastle.Crypto.Parameters.KeyParameter(hmacKey); hmacsha512Obj.Init(param); hmacsha512Obj.BlockUpdate(input, offset, length); hmacsha512Obj.DoFinal(output, 0); return(output); }
/// <summary> /// 哈希计算 /// </summary> /// <param name="data">输入字符串</param> /// <param name="key">密钥KEY</param> /// <param name="digest"></param> /// <returns>哈希值</returns> public static byte[] Compute(string data, byte[] key, IDigest digest) { if (string.IsNullOrEmpty(data)) { throw new ArgumentNullException(nameof(data)); } var keyParameter = new Org.BouncyCastle.Crypto.Parameters.KeyParameter(key); var input = Encoding.UTF8.GetBytes(data); IMac mac = new Org.BouncyCastle.Crypto.Macs.HMac(digest); mac.Init(keyParameter); mac.BlockUpdate(input, 0, input.Length); return(MacUtilities.DoFinal(mac)); }
public byte[] ofbDecoding(byte[] key, byte[] message, byte[] iv) { Crypto.Engines.AesEngine engine = new Crypto.Engines.AesEngine(); Crypto.Modes.OfbBlockCipher blockCipher = new Crypto.Modes.OfbBlockCipher(engine, 128); Crypto.Paddings.PaddedBufferedBlockCipher cipher = new Crypto.Paddings.PaddedBufferedBlockCipher(blockCipher); Crypto.Parameters.KeyParameter keyParam = new Crypto.Parameters.KeyParameter(key); Crypto.Parameters.ParametersWithIV keyParamWithIV = new Crypto.Parameters.ParametersWithIV(keyParam, iv); cipher.Init(false, keyParamWithIV); byte[] comparisonBytes = new byte[cipher.GetOutputSize(message.Length)]; int length = cipher.ProcessBytes(message, comparisonBytes, 0); cipher.DoFinal(comparisonBytes, length); return(comparisonBytes); }
static void Main(string[] args) { JSONEncryptTest test = new JSONEncryptTest(); int i = 1; System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); while (i-- > 0) { //test.testDecryption(); test.myDecryption(); } watch.Stop(); //停止监视 TimeSpan timespan = watch.Elapsed; //获取当前实例测量得出的总时间 Console.WriteLine("打开窗口代码执行时间:(秒)" + timespan.TotalMilliseconds / 1000); //总毫秒数 //创建密码字典 关系: fixture_old = "{\"key\" : \"12|qwe949461747\", \"raw\":{\"masterkey\":\"shPLmjWXmhpiFd7AFhh2rAmQTVLMj\",\"account_id\":\"r9us1jJnvg9LK9wF1DTUWJc4qpp7GVENm8\",\"contacts\":[],\"created\":\"2017-08-23T19:01:44.475Z\"}," + "\"encrypted\":{\"iv\":\"K0RLqbaVHsUNCEw3B4upNQ==\"," + "\"v\":1," + "\"iter\":1000," + "\"ks\":256," + "\"ts\":64," + "\"mode\":\"ccm\"," + "\"adata\":\"\"," + "\"cipher\":\"aes\"," + "\"salt\":\"5prWye2f3LM=\"," + "\"ct\":\"451CMPdT6yvkw2sCXNdl1sHIbeVtAE0eqB9iPkIJlhIFs79JNlF/58tQKagF/60sqqap/7XH4S4gCjARWVh9Dglu3243Lo3MsqJHjRtLNs6h8FZFTrOlbuIwR9Lb9hblXYgyD3DxS6GlbfmBTLLKYhu56QLFNKcA0NCuyesSAr/pNl3O1KBMs7lSDkLXpitDDQxzvQ60v+aTAg==\"}}"; if (File.Exists("./wallet.txt")) { fixture_old = File.ReadAllText("./wallet.txt"); byte[] bpath = Convert.FromBase64String(fixture_old); fixture_old = System.Text.ASCIIEncoding.Default.GetString(bpath).Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""); } else { Console.WriteLine("正在以默认的加密字符串生成字典,不匹配会导致程序崩溃"); } DirectoryInfo TheFolder = new DirectoryInfo("./pass"); if (!TheFolder.Exists) { Console.WriteLine("请在程序当前目录创建pass文件夹,并把字典放进目录里面"); return; } int join_count = 1; foreach (FileInfo NextFile in TheFolder.GetFiles()) { Thread my_thread = new Thread(new ParameterizedThreadStart(MYThread_Parall)); my_thread.Start(NextFile); if (join_count++ % 10 == 0) { my_thread.Join(); } if (false) { if (NextFile.Name.Contains("txt")) { string[] all_pass = File.ReadAllLines(NextFile.FullName); JObject parsed = JObject.Parse(fixture_old), raw = parsed.GetValue("raw").ToObject <JObject>(), encrypted = parsed.GetValue("encrypted").ToObject <JObject>(); int ks = 256, iter = 1000, ts = 64; JsonEncrypt jsonEncrypt = new JsonEncrypt(ks, iter, ts); //string key = "12|qwe949461747"; List <string> base64_pass = new List <string>(); foreach (string pass in all_pass) { Org.BouncyCastle.Crypto.Parameters.KeyParameter new_key = jsonEncrypt.CreateKey(pass.Length + "|" + pass, encrypted); System.Text.Encoding encode = System.Text.Encoding.ASCII; // string strPath = Convert.ToBase64String(new_key.GetKey()); base64_pass.Add(pass.Length + "|" + pass + "#" + Convert.ToBase64String(new_key.GetKey())); } string base64_pass_dir = "./base64_pass/"; if (!Directory.Exists(base64_pass_dir)) { Directory.CreateDirectory(base64_pass_dir); } File.WriteAllLines(base64_pass_dir + NextFile.Name, base64_pass); } } } Console.WriteLine("程序执行完毕,请检查目录中是否生成新的文件"); Console.ReadKey(); }