我想使用按位运算符创建一个很好的加密.但是我没有这样做.
我希望它有按位运算符使用字节数组来加密和解密我的字节数组.
public class Cryptographer
{
private byte[] Keys { get; set; }
public Cryptographer(string password)
{
Keys = Encoding.ASCII.GetBytes(password);
}
public void Encrypt(byte[] data)
{
for(int i = 0; i < data.Length; i++)
{
data[i] = (byte) (data[i] & Keys[i]);
}
}
public void Decrypt(byte[] data)
{
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(Keys[i] & data[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是错的,这就是我需要帮助的原因.我只是希望它使用1个字符串来加密和解密所有数据.
Ste*_*end 26
这有时被称为"craptography",因为它提供了安全的幻觉,同时在功能上无用于保护任何东西.如果你想正确地进行加密,请使用框架类,因为滚动自己非常困难.
看看这个是关于你想要做什么(加密/解密)的建议 - http://msdn.microsoft.com/en-us/library/e970bs09.aspx.确实,您的要求应确定您决定使用哪些课程.这有很好的背景:http://msdn.microsoft.com/en-us/library/92f9ye3s.aspx
对于简单的加密/解密(如果这是你需要的),DPAPI可能是最简单的方法.
dtb*_*dtb 10
您似乎正在尝试实施XOR密码.XOR ^ 在C#中:
public void Crypt(byte[] data)
{
for(int i = 0; i < data.Length; i++)
{
data[i] = (byte) (data[i] ^ Keys[i]);
} ?
}
Run Code Online (Sandbox Code Playgroud)
由于Encrypt和Decrypt方法完全相同,因此您只需要一种方法.
但请注意,这只是一个玩具,并不适合在真实场景中保护数据.查看System.Security.Cryptography命名空间,它提供了许多经过验证的算法的实现.尽管如此,正确使用这些仍然很难.
使用Xor ^运算符而不是And &.此外,您不应该假设数据和密钥长度相同.
public class Cryptographer
{
private byte[] Keys { get; set; }
public Cryptographer(string password)
{
Keys = Encoding.ASCII.GetBytes(password);
}
public void Encrypt(byte[] data)
{
for(int i = 0; i < data.Length; i++)
{
data[i] = (byte) (data[i] ^ Keys[i % Keys.Length]);
}
}
public void Decrypt(byte[] data)
{
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(Keys[i % Keys.Length] ^ data[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10045 次 |
| 最近记录: |