{"id":1586,"date":"2011-03-07T06:57:01","date_gmt":"2011-03-07T06:57:01","guid":{"rendered":"http:\/\/enjoyasp.net\/?p=1586"},"modified":"2011-03-09T02:51:47","modified_gmt":"2011-03-09T02:51:47","slug":"%e5%8f%af%e9%80%86%e5%8a%a0%e5%af%86%e7%ae%97%e6%b3%95-rijndael%e5%8a%a0%e5%af%86%e7%ae%97%e6%b3%95","status":"publish","type":"post","link":"https:\/\/enjoyasp.net\/index.php\/2011\/03\/07\/%e5%8f%af%e9%80%86%e5%8a%a0%e5%af%86%e7%ae%97%e6%b3%95-rijndael%e5%8a%a0%e5%af%86%e7%ae%97%e6%b3%95\/","title":{"rendered":"\u53ef\u9006\u52a0\u5bc6\u7b97\u6cd5-Rijndael\u52a0\u5bc6\u7b97\u6cd5"},"content":{"rendered":"<pre escaped=\"true\" lang=\"csharp\">\r\n\u83b1\u6069\u6234\u5c14\u7b97\u6cd5\r\n\u8c03\u7528\u65b9\u5f0f\uff1a\r\n SymmetricMethod smd = new SymmetricMethod();\r\n string encode = smd.Encrypto(\"18620023427\"); \/\/JyHPgvA0lDTzgEKGYeCvxw==\r\n string decode = smd.Decrypto(encode);\r\n\u53ef\u7528DotNETReactor\u6df7\u6dc6\u52a0\u5bc6\u63d0\u5347\u5b89\u5168\r\n\u53c2\u8003\uff1ahttp:\/\/www.cnblogs.com\/freelyflight\/archive\/2005\/08\/19\/218139.aspx\r\n\r\n\r\n  \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u5bf9\u79f0\u52a0\u5bc6\u7b97\u6cd5\u7c7b\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public class SymmetricMethod\r\n    {\r\n\r\n        private SymmetricAlgorithm mobjCryptoService;\r\n        private string Key;\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u5bf9\u79f0\u52a0\u5bc6\u7c7b\u7684\u6784\u9020\u51fd\u6570\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public SymmetricMethod()\r\n        {\r\n            mobjCryptoService = new RijndaelManaged();\r\n            Key = \"LifeIsGood@lvshou\";\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u83b7\u5f97\u5bc6\u94a5\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;returns&gt;\u5bc6\u94a5&lt;\/returns&gt;\r\n        private byte[] GetLegalKey()\r\n        {\r\n            string sTemp = Key;\r\n            mobjCryptoService.GenerateKey();\r\n            byte[] bytTemp = mobjCryptoService.Key;\r\n            int KeyLength = bytTemp.Length;\r\n            if (sTemp.Length &gt; KeyLength)\r\n                sTemp = sTemp.Substring(0, KeyLength);\r\n            else if (sTemp.Length &lt; KeyLength)\r\n                sTemp = sTemp.PadRight(KeyLength, ' ');\r\n            return ASCIIEncoding.ASCII.GetBytes(sTemp);\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u83b7\u5f97\u521d\u59cb\u5411\u91cfIV\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;returns&gt;\u521d\u8bd5\u5411\u91cfIV&lt;\/returns&gt;\r\n        private byte[] GetLegalIV()\r\n        {\r\n            \/\/string sTemp = \"E4ghj*Ghg7!rNIfb&amp;95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&amp;!hg4ui%$hjk\";\r\n            string sTemp = Key;\r\n            mobjCryptoService.GenerateIV();\r\n            byte[] bytTemp = mobjCryptoService.IV;\r\n            int IVLength = bytTemp.Length;\r\n            if (sTemp.Length &gt; IVLength)\r\n                sTemp = sTemp.Substring(0, IVLength);\r\n            else if (sTemp.Length &lt; IVLength)\r\n                sTemp = sTemp.PadRight(IVLength, ' ');\r\n            return ASCIIEncoding.ASCII.GetBytes(sTemp);\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u52a0\u5bc6\u65b9\u6cd5\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"Source\"&gt;\u5f85\u52a0\u5bc6\u7684\u4e32&lt;\/param&gt;\r\n        \/\/\/ &lt;returns&gt;\u7ecf\u8fc7\u52a0\u5bc6\u7684\u4e32&lt;\/returns&gt;\r\n        public string Encrypto(string Source)\r\n        {\r\n            byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);\r\n            MemoryStream ms = new MemoryStream();\r\n            mobjCryptoService.Key = GetLegalKey();\r\n            mobjCryptoService.IV = GetLegalIV();\r\n            ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();\r\n            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);\r\n            cs.Write(bytIn, 0, bytIn.Length);\r\n            cs.FlushFinalBlock();\r\n            ms.Close();\r\n            byte[] bytOut = ms.ToArray();\r\n            return Convert.ToBase64String(bytOut);\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u89e3\u5bc6\u65b9\u6cd5\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"Source\"&gt;\u5f85\u89e3\u5bc6\u7684\u4e32&lt;\/param&gt;\r\n        \/\/\/ &lt;returns&gt;\u7ecf\u8fc7\u89e3\u5bc6\u7684\u4e32&lt;\/returns&gt;\r\n        public string Decrypto(string Source)\r\n        {\r\n            byte[] bytIn = Convert.FromBase64String(Source);\r\n            MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);\r\n            mobjCryptoService.Key = GetLegalKey();\r\n            mobjCryptoService.IV = GetLegalIV();\r\n            ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();\r\n            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);\r\n            StreamReader sr = new StreamReader(cs);\r\n            return sr.ReadToEnd();\r\n        }\r\n    }<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u83b1\u6069\u6234\u5c14\u7b97\u6cd5 \u8c03\u7528\u65b9\u5f0f\uff1a SymmetricMethod smd = new SymmetricMethod( [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-1586","post","type-post","status-publish","format-standard","hentry","category-14"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/1586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/comments?post=1586"}],"version-history":[{"count":0,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/1586\/revisions"}],"wp:attachment":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/media?parent=1586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/categories?post=1586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/tags?post=1586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}