我有一个大的unicode文本文件(35 MB),其中包含用标点符号分隔的单词。我需要以某种方式隐藏文件的内容(至少来自大多数不专攻破解的人)。
到目前为止最好的方式似乎是加密。我对加密几乎一无所知。我试图将解决方案用于类似的问题“C#的简单双向加密”,但执行加密需要很长时间。
开箱即用的最快方式(算法)是什么(即它包含在.Net lib中)?关于如何使用它的简短示例将是很好的:) 我不关心加密有多强,如果你用文本编辑器打开加密文件而没看到这些文字,那就完美了。重要的是速度。
答案 0 :(得分:3)
AES非常快,这里有一些帮助实现它:Using AES encryption in C#
除了行业标准加密之外的任何事情迟早都会提出问题。
答案 1 :(得分:0)
到目前为止你尝试了什么? AES和blowfish等标准加密是否太慢?
你总是可以做一些简单的事情,比如根据重复到与文件相同长度的一些密码对内容进行xor-ing。
答案 2 :(得分:-1)
正如tilleryj所说
将内容与某些密码重复到与文件相同的长度,简单快速
但它比其他征兵类型更安全。 我编写了一个简单的类,可以帮助您使用另一个字符串作为密码来使用xor方法来输入字符串。希望其他人可以使用它。
`using System; using System.Text;namespace MyEncriptionNameSpace { class XorStringEncripter { private string __passWord; public XorStringEncripter(string password) { if (password.Length == 0) { throw new Exception("invalide password"); } __passWord = password; } public string encript(string stringToEncript) { return __encript(stringToEncript); }
public string decript(string encripTedString) { return __encript(encripTedString); } public string __encript(string stringToEncript) { var encriptedStringBuilder = new StringBuilder(stringToEncript.Length); int positionInPassword = 0; for (int i = 0; i < stringToEncript.Length; i++) { __corectPositionInPassWord(ref positionInPassword); encriptedStringBuilder.Append((char)((int)stringToEncript[i] ^ (int)__passWord[positionInPassword])); ++positionInPassword; } return encriptedStringBuilder.ToString(); } private void __corectPositionInPassWord(ref int positionInPassword) { if (positionInPassword == __passWord.Length) { positionInPassword = 0; } } }
}`
实际上和下文做同样的事情,我提供了一个bouth,以避免混淆使用相同的功能进行bouth encription和decrition。这是因为如果你有一个nuber A而你用它与B并且你得到C然后你得到C和C你得到A.
A xor B = C ---&gt; C xor B = A