コード例 #1
0
ファイル: Program.cs プロジェクト: zgjtss/init-param-ripple
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: zgjtss/init-param-ripple
        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();
        }