在.net中,我用AES加密方法对一串字符串进行了加密,得到了一串64位的新字符串,现在我想对这串64位的

在.net中,我用AES加密方法对一串字符串进行了加密,得到了一串64位的新字符串,现在我想对这串64位的,第1张

首先,MD5不是用来压缩的,MD5值是用来作为message authentication code,本身是不可逆的。其实这也很容易理解,因为md5值只有128 bits,表示的值范围就在0~2^128这个区间内,而要做md5的数据是无穷的,也就是有无数的数据有相同的md5值,当然是不可能恢复原始数据了!

其次,用aes或者des或者任何安全的加密体制加密后得到的字符串,按照密码学安全性定义,困吵核应该是伪随机字符串,简碰简单地说就是看起来和随机字符串没有什么区别,没有特殊结构,没有信息冗余,达不到这些要求,就不是一个安全的加密体制。而字符串压缩汪掘,就是要提取这种特殊结构或者信息冗余,既然不存在,字符串压缩算法根本不会起作用!这就是为什么平时你压缩文本文件时压缩比很大,因为文本冗余度非常高!而压缩可执行文件或者DLL时,压缩后大小几乎没怎么改观,因为随机程度很高,冗余度很小!

综上所述,用aes加密后的字符串,是不能再进行压缩的!希望我说得够清楚!

.Net软件的特点,一些强大的编译工具可以对.Net可执行文件进行反编译 *** 作,并得出相应的IL代码甚至是源代码。即使是采用混淆工具以及强命名工具也不能从根本上解决问题,代码依然会很容易地被Reflectoer等工具反编译源代码。软件弊裤加密狗:威步(WIBU)的CodeMeter,AxProtector(for.net)两款软件加密狗性能非常不错反编译的问题,与传统的代码混淆工具(Obfuscator)不同,AxProtector可以完全阻止对.NET 程序集(由 C#, VB.NET, Delphi.NET, ASP.Net… 等语言编写)的反编译。通俗的讲,AxProtector在破解者和您的 .NET 代码之间构建了强大的防破解保护屏障,生成一个基于 Windows 的而不是基于 MSIL 的兼容格式文件。原始的 .NET 代码完整的被加密后封装在本地代码内,无论何时都不会释放到硬盘,对于破解者是不可见的。与单纯的.net加密软件不同,AxProtector与CodeMeter硬件加密狗配套餐使用,采用亮卜此了更为严密的密钥管理,及最先进的AES、RSA、ECC等加密敬迅算法存储或传输密钥,保证通讯安全。.Net代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的.class 文件可以非常轻易地被反编译。一般软件开发商会采用一种叫做混淆器的工具。混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。由于混淆器只是混淆了方法名称或流程,而不能防止源代码被反编译,因此混淆器的作用只是增加了反编译的难度,最终的结果也是治标不治本。对于一些掌握工具的人来说几乎还是透明的。AxProtector是一款真正意义的加密源代码、防止反编译的.net软件加密软件。AxProtector加密了.net原代码,任何时候原代码都不可能被还原到硬盘当中。采用AxProtector加密后的.net代码只有在程序调用或执行某一段函数的时候,才能通过AxProtectorClass在内存中解密后返回到程序中执行,运行之后迅速立即加密。这种随机加密、按需解密原代码的功能,能很好的防止.Net程序的反编译,同时能够很好地防止API加密点被摘除。有效地保证了源代码的执行效率和安全性。

不是初学,而是对.net中所有的加解密方式都没有弄清楚。不过别灰心——很多自以为会的人也没有弄清。

首先,.net中类库中支持各类摘要加解密方式。一般情况下我们将安全分为两类,一类是摘要,一类是加解密。加密解又分为对称与非对称加解密。

在.net体系中,不管是摘要还是加解密,为了统一算法方式,一律都是流方式进行的。不管是MD5摘要还是ADE/DES/TDES/RSA等等。一定要记住的第一条,是流方式进行的!

流——这个概念很多人也不清楚,因为stream的范围还是非常的大的,有网络流responseStream等,基本文本流,IO流等等,在加密时我们使用了一个流叫“加解密流”CryptStream,该流用来实现加解密及摘要算法等等。

那么CryptoStream是个什么流呢?它算是转换流,把一种形式转换成另一种形式,比如把密文转换成明文或把明文换成密文。正常的情况下,我们可以用流写流的方式来实现,比如MemoryStream来换流。当然,也可以把byte[]数组直接写到流中。

流这部分说完了,那么,其弊拿谨实我们如何区别CryptoStream是加密还是解密呢,除了说明之外,还是一租基个方式,就是看流的方式是读还是写!所以当我看到你的解密流中使用的方式竟然是Write,而不是Read,所以你对加解密方式并没有真正理解。

比如,我们可以转换后的流直接敏升进行ReadToLine即可。

老实说,你这种写法有很大问题——有关stream大部分都是非托管,所以一定要记着Dispose,或Close(Close时会自动调用Dispose)。防止出现错误等内存泄露。

有于加解密流,我们经常一句话,加密方式是Write,解密方式是Read!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12280441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存