我创建了一个C#类来解密使用T-SQL的EncryptByPassPhrase加密的字节数组。(是的,我知道我可以在SQL
Server中解密,但是我需要的是能够在数据库层和中间层中等效地进行加密/解密。)
我了解SQLServer的EncryptByPassPhrase和DecryptByPassPhrase使用TripleDES对称密钥算法。但是,对于我来说不清楚IV应该如何模拟SQLServer的密码学。我可以使用TripleDESCryptoServiceProvider类进行加密/解密,但找不到正确的密钥和IV实现来复制SQLServer正在执行的操作。
有人做过类似的事情吗?谢谢!
(1)使用C#生成密钥/ iv对:TripleDESCryptoServiceProvider cp = new
TripleDESCryptoServiceProvider();
MemoryStream m = new MemoryStream(Convert.FromBase64String(Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(plainText))));
CryptoStream cs = new CryptoStream(m, cp.CreateEncryptor(cp.Key, cp.IV), CryptoStreamMode.Read);
cp.Key = Convert.FromBase64String("BeaYzNeHfDb27OFYgaYHUd5HUJE2aZyI");
cp.IV = Convert.FromBase64String("T/ENF5G4sCA=");
string key = Convert.ToBase64String(cp.Key);
string iv = Convert.ToBase64String(cp.IV);
// write key/iv to a file here
(2)一旦有了,就可以使用像这样的代码进行编码
TripleDESCryptoServiceProvider cp = new TripleDESCryptoServiceProvider();
MemoryStream m = new MemoryStream(Convert.FromBase64String(Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(plainText))));
CryptoStream cs = new CryptoStream(m, cp.CreateEncryptor(cp.Key, cp.IV), CryptoStreamMode.Read);
cp.Key = Convert.FromBase64String("the key value from above");
cp.IV = Convert.FromBase64String("the iv value from above");
string key = Convert.ToBase64String(cp.Key);
string iv = Convert.ToBase64String(cp.IV);
List<byte> r = new List<byte>();
int x = 0;
for (; x > -1; )
{
x = cs.ReadByte();
if (x > -1)
r.Add((byte)x);
}
byte[] y = r.ToArray();
string cypherText = Convert.ToBase64String(y);
(3)然后解码:
TripleDESCryptoServiceProvider cp = new TripleDESCryptoServiceProvider();
MemoryStream m = new MemoryStream(Convert.FromBase64String(cypherText));
cp.Key = Convert.FromBase64String("the key value from above");
cp.IV = Convert.FromBase64String("the iv value from above");
CryptoStream cs = new CryptoStream(m, cp.CreateDecryptor(cp.Key, cp.IV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
string plainText = reader.ReadToEnd();
问题内容: 我正在逐行打印数据,并希望像表一样组织数据。 我最初用过。 但是对于某些较大的名称,电话号码会被推离对齐状态 我正在尝试使用String.format()实现此效果。谁能告诉我使用的格式语法? 我尝试过,但这不是我想要的。我希望它看起来像这样: 约翰·史密斯123456789 鲍勃·麦迪逊123456789 查尔斯·理查兹123456789 编辑:这些答案似乎适用于System.out
在C中,我有两个字符数组: 如何将
我从后端获取json,如下所示: 并在json中循环,如下所示: 但是,这里的只是在td列中打印,如以下。那么,我如何在每个tds中使这个显示像这样呢? 我的尝试: 我对两种解决方案都是开放的,即:后端和前端。对于我的后端,我正在使用django,如果您需要查看任何来自后端的代码,请告诉我。
实现 (Implementation) 现在,我们将看到该计划的实际执行情况 - #include <stdio.h> int main() { char s1[] = "TajMahal"; // String Given char s2[8]; // Variable to hold value int length = 0;
我使用: 创建目录。虽然,它似乎工作正常(没有异常被抛出)我找不到文件夹/目录在文件系统的任何地方。我做错了什么吗?
当我试图复制一个用C#创建的文件时遇到了这个问题: