我需要tyhe dot net相当于以下代码.问题是,我在客户端使用
Ruby加密,这里是代码.
编码的字符串将传递给C#Web服务.那必须解密字符串.
编码的字符串将传递给C#Web服务.那必须解密字符串.
如果有人可以提供与此代码等效的点网,那么它将会有所帮助.
require 'rubygems' require 'ezcrypto' require 'crypt/rijndael' plaintext = '24.9195N 17.821E' aes_key = Crypt::Rijndael.new('0123456789abcdef0123456789abcdef') aes_cyphertext = aes_key.encrypt_string(plaintext) print "\n" print aes_cyphertext +"\n" print Base64.encode64(aes_cyphertext) print "\n" print aes_key.decrypt_string(aes_cyphertext) print "\n"
解决方法
它将类似于下面显示的代码作为单元测试.第一部分进行加密 – 后半部分进行加密.
将代码粘贴到新的MSTest单元测试(创建新测试项目或添加到现有测试项目).
键和iv是您需要相应设置的.
//needed to convert from hex string public static byte[] FromHexString(string hexString) { int NumberChars = hexString.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) bytes[i / 2] = Convert.ToByte(hexString.Substring(i,2),16); return bytes; } [TestMethod] public void test() { string toEncryptString = "24.9195N 17.821E"; //initialise key and IV (note - all zero IV is not recommended!) byte[] key = FromHexString("0123456789abcdef0123456789abcdef"); byte[] iv = FromHexString("00000000000000000000000000000000"); byte[] toEncrypt = System.Text.Encoding.UTF8.GetBytes(toEncryptString); byte[] cipherBytes = null; string cipherText = null; //encrypt using (System.Security.Cryptography.Rijndael r = new RijndaelManaged()) { r.Key = key; r.IV = iv; using(System.Security.Cryptography.ICryptoTransform transform = r.CreateEncryptor()) { using (var mStream = new System.IO.MemoryStream()) { using (var cStream = new CryptoStream(mStream,transform,CryptoStreamMode.Write)) { cStream.Write(toEncrypt,toEncrypt.Length); cStream.FlushFinalBlock(); cipherBytes = mStream.ToArray(); cipherText = Convert.ToBase64String(cipherBytes); } } } } //decrypt byte[] toDecrypt = Convert.FromBase64String(cipherText); string decryptedString = null; using (System.Security.Cryptography.Rijndael r = new RijndaelManaged()) { r.Key = key; r.IV = iv; using(System.Security.Cryptography.ICryptoTransform transform2 = r.CreateDecryptor()) // <-- difference here { using (var mStream2 = new System.IO.MemoryStream()) { using (var cStream2 = new CryptoStream(mStream2,transform2,CryptoStreamMode.Write)) { cStream2.Write(toDecrypt,toDecrypt.Length); cStream2.FlushFinalBlock(); decryptedString = System.Text.Encoding.UTF8.GetString(mStream2.ToArray()); } } } } Assert.AreEqual(toEncryptString,decryptedString); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。