我有一个Byte []字段,它是我需要加密的文件内容.没有什么特别的或花哨的,只是足以确保下一个获得它的人将无法轻易解码它.我会使用.Net Framework 4.0附带的加密,但我绝对不需要使文件比它更大.
我想过只是简单地反转数组或添加几个字节到最后......?
如果我可以避免使阵列变得更大,那将是伟大的.
有什么建议?
谢谢!
我正在尝试序列化/反序列化字符串。使用代码:
private byte[] StrToBytes(string str)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, str);
ms.Seek(0, 0);
return ms.ToArray();
}
private string BytesToStr(byte[] bytes)
{
BinaryFormatter bfx = new BinaryFormatter();
MemoryStream msx = new MemoryStream();
msx.Write(bytes, 0, bytes.Length);
msx.Seek(0, 0);
return Convert.ToString(bfx.Deserialize(msx));
}
Run Code Online (Sandbox Code Playgroud)
如果我使用字符串变量,那么这两个代码可以正常工作。
但是,如果我反序列化一个字符串并将其保存到文件中,则在阅读了后面的内容并再次对其进行序列化之后,我只会得到字符串的第一部分。所以我相信我的文件保存/读取操作有问题。这是我保存/读取的代码
private byte[] ReadWhole(string fileName)
{
try
{
using (BinaryReader br = new BinaryReader(new FileStream(fileName, FileMode.Open)))
{
return br.ReadBytes((int)br.BaseStream.Length);
}
}
catch (Exception)
{
return null;
}
}
private void WriteWhole(byte[] wrt,string fileName,bool …Run Code Online (Sandbox Code Playgroud) 我想创建一个可以使用C#加密和解密我的密码的应用程序.
我的想法很简单.我将使用Substring从输入的字符串中提取每个字母,我将操纵ASCI代码并将其转换为另一个字母.我将使用相同的方法来加密它们.
有人解密我生成的密码有多难?
我正在寻找建议或示例代码.
我如何处理读写加密的XML文件?我需要一种方法来保存用户最后输入的表单值,但我不希望它们可以作为纯文本或XML读取.
我在这个堆栈溢出答案中发现了这个代码,我试图理解这个递归函数是如何终止的.我没有在该线程上提出问题的原因是我的问题是关于递归,而不是那里讨论的内容(加密).
/// <summary>
/// Simple Encryption (AES) then Authentication (HMAC) for a UTF8 Message.
/// </summary>
/// <param name="secretMessage">The secret message.</param>
/// <param name="cryptKey">The crypt key.</param>
/// <param name="authKey">The auth key.</param>
/// <param name="nonSecretPayload">(Optional) Non-Secret Payload.</param>
/// <returns>
/// Encrypted Message
/// </returns>
/// <exception cref="System.ArgumentException">Secret Message Required!;secretMessage</exception>
/// <remarks>
/// Adds overhead of (Optional-Payload + BlockSize(16) + Message-Padded-To-Blocksize + HMac-Tag(32)) * 1.33 Base64
/// </remarks>
public static string SimpleEncrypt(string secretMessage, byte[] cryptKey, byte[] authKey,
byte[] nonSecretPayload = …Run Code Online (Sandbox Code Playgroud) 是否存在以下安全实现:
Guid original = Guid.NewGuid();
Guid inverted = MysteryImplementation(original, salt); // salt is some sort of input
Guid shouldBeOriginal = MysteryImplementation(inverted, salt);
Assert.AreEqual(original, shouldBeOriginal, "MysteryImplementation did no work");
编辑:
由于这个被投票(虽然我有点不确定为什么),我认为需要更多的背景:
在远处的某个地方,有一个应用程序,其中主键存储为GUID.在此应用程序中,这些GUID向Web客户端公开.
在我追求改善现状的过程中,我有一个想法,即将这些GUID与用户会话数据进行映射,以降低主键意外/恶意泄漏的风险.映射这些GUID具有额外的好处,它还可以更容易地实现GUID引用的那些对象的工作副本.
这就是我决定开始寻找"安全"方式来映射GUID的原因.
回答评论:
-Mapping应该与所有其他GUID相比保留全局唯一性(我不希望那些映射的GUID与现有的GUID冲突).
- 在此上下文中的"安全"意味着在不知道密码密钥(典型的加密请求,我认为转换映射的GUID应该具有规范化分布)的情况下,不可能找出原始GUID.
c# ×7
encryption ×3
algorithm ×1
cryptography ×1
passwords ×1
recursion ×1
rsa ×1
winforms ×1
xml ×1