[原创][QQ聊天记录]-和“阮”谈有关数据加密(.NET CF数据加密,DSA算法)
常建昭
在新手群里询问了有关.NET CF中如何进行数据加密的问题,“阮”介绍了DSA算法原理,(.NET已经提供了此算法)以及一些其它相关的讨论。在这里贴出来,希望对大家有帮助。
对于.NET CF中的数据加密,我还没有找到很好的方法,目前我所能做的是采用CryptoAPI进行密码的加密。但是我不是很明白其原理。如果有朋友明白,请麻烦转告,谢谢。
====================================================================================
Ray(81000315) 09:49:15
感觉CF怎么这么不注重安全性能呀。
阮(11566307) 09:48:57
http://www.youdzone.com/signature.html
Ray(81000315) 10:05:12
阮,谢谢
Ray(81000315) 10:05:56
可是我是想在我PPC用户登录时,把密码发送到web service里。。在发现前,进行密码加密。
Ray(81000315) 10:06:08
在发送前,进行密码加密。
阮(11566307) 10:09:38
不用发送
Ray(81000315) 10:10:23
不用发送?不用发送怎么调用web service的登录方法??
阮(11566307) 10:10:41
你给所有PPC发一个Key,然后你在服务器上保存一个这个PPC的另外一个Key
阮(11566307) 10:11:12
这样,比如一个要发一个空格
阮(11566307) 10:11:27
通过算法就可以加密了
阮(11566307) 10:11:34
例如
阮(11566307) 10:11:49
32代表空格
阮(11566307) 10:11:55
PPC的KEY是2
阮(11566307) 10:12:09
服务器上纪录的KEY是8
阮(11566307) 10:12:22
发的时候先加密
阮(11566307) 10:12:37
32+2 = 34,34在网上传送
阮(11566307) 10:13:11
当服务器得到34后用 34 + 8 - 10就可以解密
阮(11566307) 10:13:20
然后如果有另外一个PPC
阮(11566307) 10:13:36
你给KEY是3
阮(11566307) 10:13:44
那么空格发来就是35
阮(11566307) 10:13:53
你保有的KEY自然是7
阮(11566307) 10:14:05
35+7-10也可以还原出来
阮(11566307) 10:14:25
然后再有个PPC,你就给他个4就可以了
阮(11566307) 10:14:35
这是往上发
阮(11566307) 10:14:45
往PPC发相同道理
阮(11566307) 10:14:57
比如发个32,空格
阮(11566307) 10:15:11
你的KEY是8,PPC是2
Ray(81000315) 10:15:45
不是很明白,我现收藏,需要时间去消化。
阮(11566307) 10:15:39
赫赫,其实很简单的
Ray(81000315) 10:16:50
你说,发的时候先加密。
Ray(81000315) 10:16:59
这是什么意思呢?
阮(11566307) 10:16:36
对
Ray(81000315) 10:17:15
用什么进行加密?
阮(11566307) 10:16:56
这样避免了重要数据在网上明文传送
Ray(81000315) 10:17:32
其实这就是我所想要的。
阮(11566307) 10:17:08
加密就是一个算法
阮(11566307) 10:17:18
我刚才的算法就是+8-10
阮(11566307) 10:17:24
错了
阮(11566307) 10:17:29
+KEY -10
Ray(81000315) 10:18:37
嗯。。明白了,你刚才说的是一种算法,而利用这种算法进行PPC发出的信息进行加密。对吗?
阮(11566307) 10:18:16
加密的时候呢是+ PPC KEY
阮(11566307) 10:18:22
对的
阮(11566307) 10:18:44
像刚才
阮(11566307) 10:19:03
加密呢都是用自己的 + 空格
阮(11566307) 10:19:31
解密呢也都是 + 自己的KEY - 10
阮(11566307) 10:19:58
算法虽然简单了点,道理是一样的,
阮(11566307) 10:20:11
md5那种不能还原的
Ray(81000315) 10:20:37
谢谢,非常感谢,给了我很多主意呢。
阮(11566307) 10:20:27
阮(11566307) 10:20:51
你可以从System.Text.Encoder继承
阮(11566307) 10:20:56
CF里也有的
Ray(81000315) 10:22:22
是吗?我没注意有这个类。
Ray(81000315) 10:22:40
我一直是用CryptoAPI来进行加密的。
Ray(81000315) 10:22:50
但是我却不是很明白。
阮(11566307) 10:23:47
Framework里应该有我刚才所的那个东西,只不过俺没找到,
阮(11566307) 10:24:01
还没用到,也没理他:)
Ray(81000315) 10:24:48
呵呵。
Ray(81000315) 10:25:01
我觉的大家都应该要用到的吧。
阮(11566307) 10:24:37
System.Security.Cryptography Namespace你说的是这个吗?
Ray(81000315) 10:25:15
这个我用在Asp.net里了。
Ray(81000315) 10:25:30
里面提供了很多算法。
Ray(81000315) 10:25:42
包括MD5等
Ray(81000315) 10:25:47
但在CF中不支持。
阮(11566307) 10:25:38
看到了,赫赫,里头的确有刚才我说的那种加密
Ray(81000315) 10:26:18
是哪种?
阮(11566307) 10:26:06
CF我倒没看
阮(11566307) 10:26:12
等我找下
Ray(81000315) 10:27:18
嗯。。CF不支持任何加密。这让我郁闷不已。
阮(11566307) 10:28:44
System.Security.Cryptography.DSA
阮(11566307) 10:28:47
这个就是
阮(11566307) 10:29:10
它的原理就是我刚刚给你发的那个链接讲的那样
Ray(81000315) 10:30:12
哦。非常感谢。
阮(11566307) 10:30:14
RSA也是
Ray(81000315) 10:31:59
可是MD5不是非常安全吗?(虽然已经被咱中国人破解了,呵呵)
阮(11566307) 10:31:45
不用客气啦,俺其实也学到了嘛:),至少俺知道.net里有这种加密了
阮(11566307) 10:32:02
MD5 是一种不可还原的加密
阮(11566307) 10:32:18
破解也只是找到碰撞
Ray(81000315) 10:32:51
呵呵。MD5不能还原是不是很好,但我们如果用在登录的话,也不需要进行还原吧。
阮(11566307) 10:32:54
比如123 加密成 456,他的破解也只是发现789加密也可以成为456,这种叫碰撞
Ray(81000315) 10:33:35
那一般MD5用在什么情况下呢?
阮(11566307) 10:33:11
他不可能由456得到原来是123
Ray(81000315) 10:33:43
明白了
阮(11566307) 10:33:32
就是加密用户密码