[原创][QQ聊天记录]-和“阮”谈有关数据加密(.NET CF数据加密,DSA算法)

[原创][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

PPCKEY2

(11566307) 10:12:09

服务器上纪录的KEY8

(11566307) 10:12:22

发的时候先加密

(11566307) 10:12:37

32+2 = 3434在网上传送

(11566307) 10:13:11

当服务器得到34后用 34 + 8 - 10就可以解密

(11566307) 10:13:20

然后如果有另外一个PPC

(11566307) 10:13:36

你给KEY3

(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

你的KEY8PPC2

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

 

就是加密用户密码

 

 

   您刚才发送的消息:"明白了 "没有发送成功(服务器超时).

 

 

(11566307) 10:33:52

 

你银行卡密码不希望别人看到吧?

 

Ray(81000315) 10:34:29

 

嗯。明白了。还好没走错方向。

 

(11566307) 10:34:02

 

用MD5 就谁也看不到

 

(11566307) 10:34:11

 

 

 

Ray(81000315) 10:34:58

 

那在网上对CF加密的CryptoAPI又是用什么算法进行加密的?

 

(11566307) 10:34:55

 

介个俺就不知道老 

 

Ray(81000315) 10:35:57

 

这是我发现的唯一的一种支持CF数据加密的类了。

 

Ray(81000315) 10:36:10

 

当然,如果水平够高,可以写出自己的加密算法类。

 

Ray(81000315) 10:37:20

 

可是,因为涉及安全性,如果编写的加密算法控件做的远没别人做的安全性高,还是使用别人的比较好。(当然要经过同意)

 
<完>
=========================
发出此贴还有一个意义,因为我有很多朋友在做作项目的时候,(包括我)对于数据加密,安全性能方面并不是很在意,特别是对于我们新手而言,因为对大家直观的影响并不大。因此希望通过此贴,让大家更加注意到这面的重要性。


经过“阮”同意后贴出此贴,请大家评评。

你可能感兴趣的:([原创][QQ聊天记录]-和“阮”谈有关数据加密(.NET CF数据加密,DSA算法))