日期:2014-05-17  浏览次数:20968 次

C#中DES加密问题
C#要使用DES加密,但在网上搜的都是加密后转换为BASE64编码,我不需要转换为BASE64编码的格式。只要加密,完成后返回加密字符串。不要类似string str = Convert.ToBase64String(ms.ToArray());的东西。如果加密后在网上解密通过,高分相送。验证网站http://app.baidu.com/app/enter?appid=212407
加密 c# 编码

------解决方案--------------------
BitConverter.ToString(ms.ToArray()).Replcae("-","")
  
*****************************************************************************
http://feiyun0112.cnblogs.com/
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

这提问太弱了,不用BASE64编码,加密结果怎么转字符串?

那个工具我看了,人家的加密结果也是BASE64编码的

不好意思,打眼了,那瓜是BASE16编码,不是BASE64

BASE16编码?你自创的编码吗?居然还升到了星星,混来的吧。人家的是直接16进制表示法显示字节内容而已。

楼主的要求不合理,如果单纯要求加密解密算法是可以给出,但是要猜那个验证网站使用的字符编码则很麻烦。加密解密都是对二进制字节处理的,这就需要Encoding进行编码处理,一般会用Utf8,但是那个网站显然不是,编码种类很多,你让我去猜啊。


既然是选择对称加密,那么解密后还是用人类看得懂的字符把~~~ 
16进制什么的~~太高深了~
------解决方案--------------------
这是那个网站所使用的加密算法,由于是js的,算法完全透明,但是和.NET的算法是完全不一样的,虽然都是可以加密解密,但是如果.NET的内置算法加密,在让js的算法解密是肯定不行的,除非将此算法翻译过来。

var DES = {
    // initial permutation IP
    IP_Table: [
        58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 
        62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 
        57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 
        61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
    ],
    // final permutation IP^-1 
    IPR_Table: [
        40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 
        38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 
        36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 
        34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25
    ],
    // permuted choice table (key) 
    PC1_Table: [
        57,