Tag: encryption

AES-Encrypt-then-MAC一个带.NET的大文件

我想在.NET中以最有效的方式加密大文件(比方说64 GB)。 我将如何实现这个: 创建AesManaged实例以加密文件流(读取64 GB) 将此流保存到磁盘(因为它在内存中保持较大)(写入64 GB) 创建HMACSHA512实例以计算保存文件的哈希值(读取64 GB) 使用iv将加密数据保存到磁盘(读写64 GB) 简化的C#代码: using (var aesManaged = new AesManaged()) { using (var msEncrypt = File.OpenWrite(@”C:\Temp\bigfile.bin.tmp”)) { using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { File.OpenRead(@”C:\Temp\bigfile.bin”).CopyTo(csEncrypt); new MemoryStream(iv).CopyTo(csEncrypt); } } } using (var hmac = new HMACSHA512(hmacKey)) { hmacHash = hmac.ComputeHash(File.OpenRead(@”C:\Temp\bigfile.bin.tmp”)); } byte[] headerBytes; using (var […]

什么是“混淆”数值的简单但有效的方法?

假设我有一个包含2列的Access数据库表:一个是ID(从1到20000,顺序,每个都是唯一的),一个是Value(0到500之间的任何数字)。 如何以简单但有效的方式模糊Value字段(使用ID或不使用ID)? 我期望比ROT13混淆稍微有效一些,但不是那么复杂,以至于decoing需要多行代码。 解码在C#代码中完成。 混淆是通过Access中的计算字段完成的。 我将“加密”改为“混淆”以反映目标的简单性,这不是为了防止“攻击”,而是为了避免不小心暴露数据。

使用C#中的Bouncy CastlevalidationECDSA签名

当我尝试在C#中validationBouncy Castle中的ECDSA签名时,我遇到了问题。 代码是从我拥有的Java示例中采用的,因此我100%确定公钥和签名是正确的。 但是C#实现总是返回签名无效。 我检查了曲线参数,它们是正确的。 我尝试使用DER和“原始”签名,但它再次无法正常工作。 任何人都可以发现我做错了什么: namespace TestECDSA { class Program { static void Main(string[] args) { byte[] b = new byte[] { 0x2B, 0xA1, 0x41, 0x00 }; string pubKey = “044F6D3F294DEA5737F0F46FFEE88A356EED95695DD7E0C27A591E6F6F65962BAF”; string signature = “AAD03D3D38CE53B673CF8F1C016C8D3B67EA98CBCF72627788368C7C54AA2FC4”; X9ECParameters curve = SecNamedCurves.GetByName(“secp128r1”); ECDomainParameters curveSpec = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed()); ECPublicKeyParameters key = new ECPublicKeyParameters(“ECDSA”, […]

如何用DES实现CBC-MAC?

我应该在C#中实现MAC-CBC生成方法,其中包含有关加密算法的一些信息。 这就是我所拥有的: 我应该使用DES。 关键是byte[] {11, 11, 11, 11, 11, 11, 11, 11} 数据(16字节)应以8字节部分加密。 前8个字节使用Instance Vector = new byte[8] (8个字节,0值)加密。 (CBC?) 加密值的最后8个字节应转换为hex字符串。 这是我应该发送的结果。 有了这些信息,我实现了以下方法: public static string Encrypt(byte[] data) { var IV = new byte[8]; var key = new byte[] { 11, 11, 11, 11, 11, 11, 11, 11 }; var result = new byte[16]; // […]

如何在客户端加密OData请求有效负载(DataServiceContext)和在ServerSide上解密请求?

我有一个Windows应用程序使用DataServiceContext消费OData v4 WebAPI。 WebApi通过SSL,但我认为任何人都可以使用像fiddler这样的Web调试工具(在Windows应用程序主机上)来捕获请求,并且可以通过更改请求主体来重新发出请求。 所以,如果我可以使用生产环境中的公钥/私钥加密Windows应用程序中的传出请求的RequestBody ,我还在想。 如果是,我怎么可以? 我是否需要创建自定义DataServiceClientRequestMessage或需要在DataServiceContext中的某处挂钩加密过程。 请求将使用MessageHandler解密。 ServiceStack加密消息传递

在ColdFusion中加密,在C#中解密

我有一个使用encrypt()函数使用ColdFusion 9加密的字符串。 问题是该函数是使用UUEncode算法调用的(默认)。 我需要使用C#解密这个值。 所有示例都使用Base64编码。 有任何想法吗? 这是ColdFusion中使用的内容 我有结果值。 我也有一个用户的最终解密值,所以我可以将它与C#中的东西进行比较。 我需要解密系统中所有用户的密码。

没有使用.net S3获取客户端加密

我已经开始使用AWS的sdk for S3,一切都说我应该为上传获得客户端加密,但是当我用S3浏览器检查它时它只显示服务器端加密,我做错了什么? 我正在使用amazon的加密密钥服务,用户拥有使用这些密钥加密的完全权限。 谢谢! static string bucketName = “mybucket”; static EncryptionMaterials encryptionMaterials = new EncryptionMaterials(RSA.Create()); static AmazonS3EncryptionClient client = new AmazonS3EncryptionClient(Amazon.RegionEndpoint.USWest2, encryptionMaterials); static void Main(string[] args) { using (client) { try { PutObjectRequest putRequest1 = new PutObjectRequest { BucketName = bucketName, FilePath = @”C:\abc\def.pdf”, Key = “def.pdf”, ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS }; client.PutObject(putRequest1);

使用RSA AES提供程序生成自签名1024位X509Certificate2时出现问题

我正在尝试使用Microsoft AES加密提供程序生成X509Certificate2对象: CALG_AES_256(0x00006610)256位AES。 Microsoft AES加密提供程序支持此算法。 我的问题是我对CryptGenKey(providerContext, 0x6610, 0x4000001, out cryptKey)失败,出现以下错误: mscorlib.dll中发生未处理的“System.Runtime.InteropServices.COMException”类型exception 附加信息:指定了无效标志。 (HRESULTexception:0x80090009) 我正在使用的标志是(1024 << 16) | 1) (1024 << 16) | 1) 。 除非我弄错了, 根据MSDN上的文档 ,这不应该产生1024位可导出密钥吗? 我的方法有什么问题? 我的代码如下: using System; using System.Security; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Security.Cryptography.X509Certificates; namespace WebSockets { public struct SystemTime { public short Year; public short Month; public short DayOfWeek; […]

C#为DSA加密算法生成公钥和私钥

如何以字节数组格式生成DSA算法的公钥和私钥?

C#中的RC4加密代码有什么问题吗

我试图在C#中听取Foxycart XML Datafeed并遇到一个归结为加密的问题。 简而言之,他们使用RC4加密将数据作为编码和加密的XML发送。 为了测试,他们有一些(用户提交的)示例代码来使用C#对其进行测试 。 我尝试使用其中一个用户提供的示例RC4解密代码,但它似乎不起作用,他们的支持人员认为它使用C#RC4算法。 由于他们不是C#专家,我想我会问这里。 这是FoxyCart论坛上的post 无论如何,这里的代码是(尝试)通过加密XML文件并将其发布到URL来模拟响应(请注意,DataFeedKey是我已存储为成员变量的字符串): public ActionResult TestDataFeed() { string transactionData = (new StreamReader(@”D:\SampleFeed.xml”)).ReadToEnd(); string encryptedTransactionData = RC4.Encrypt(DataFeedKey, transactionData, false); string encodedTransactionData = HttpUtility.UrlEncode(encryptedTransactionData, Encoding.GetEncoding(1252)); string postData = “FoxyData=” + encodedTransactionData; var req = (HttpWebRequest)WebRequest.Create(“http://localhost:3396/FoxyCart/RecieveDataFeed”); req.Method = “POST”; req.ContentType = “application/x-www-form-urlencoded”; var sw = new StreamWriter(req.GetRequestStream(), Encoding.ASCII); sw.Write(postData); sw.Close(); HttpWebResponse […]