c#加密代码

时间:2009-08-30 13:59:47

标签: c# encryption

我想加密硬盘,主板等的序列号。你能建议一些好的加密数学公式吗?

6 个答案:

答案 0 :(得分:9)

涉及加密的一般经验法则是,如果你以前没有这样做过,那你就错了。如果加密很重要,那么使用其他人的软件包(你有源代码,最好不要引入后门程序),因为他们会解决这些问题。查看加密中的Schneier's book以获取一些通用方程和实现。

但是,如果你只是想使用加密而不是真的搞乱实现它(即使这只是复制书中的代码),那么请查看其他人提到的加密命名空间。

答案 1 :(得分:3)

答案 2 :(得分:0)

http://code.google.com/p/zscreen/source/browse/trunk/ZScreenLib/Helpers/PasswordManager.cs具有加密和解密字符串的方法。那是一个开始。 :)

答案 3 :(得分:0)

当你提到C#时,我建议你看一下.NET框架Cryptography namespace

您应该使用为您提供的算法之一,而不是希望实现自己的算法。

另见上一个问题Best way to encrypt short strings in .NET

答案 4 :(得分:0)

取决于您想要使用它们的内容。在System.Security.Cryptography命名空间中实现了大量算法。

如果你想加密数据并将它们发送到其他机器并解密它们,你最好的选择是非对称加密,例如。 RSA

如果您只对数据进行编码然后进行比较,但从不对它们进行解码,那么最好的办法就是使用散列,例如SHA-1

如果你只是想掩盖字符串,你可以用一些预定义的常量清楚地对每个字符进行异或,然后通过执行相同的过程进行解码:

private static string key = "MySecretKey";
private static byte[] keyData = Encoding.ASCII.GetBytes(key);

public static byte[] Encrypt(byte[] source)
{
    byte[] target = new byte[source.Length];

    for (int i = 0; i < target.Length; i++)
        target[i] = (byte)(source[i] ^ keyData[i % keyData.Length]);

    return target;
}

答案 5 :(得分:0)

BouncyCastle C#版本还可能为您提供.NET加密以外的一些有趣功能。