主题:VFP怎样给字串加密
yjgzs
[专家分:10] 发布于 2007-12-04 11:31:00
给字串加密,在C语言和VB里都好办.可是在VFP中,能实现这个功能吗
比如,要想给字串AS45W6GHU6加密.变成另外一个与之毫无相同之处的字串(不超过8位).这个字串还是用字母和数字表示.该怎么办.?
敬请行家指教.
最后更新于:2007-12-04 14:12:00
回复列表 (共25个回复)
沙发
wuzhouhong [专家分:10890] 发布于 2007-12-05 11:01:00
最简单的方法:ASCII码移位。
复杂的方法:没底了,你可以使用单表加密,多表加密(就是使用一个已知的大字典替换),也可以使用DES算法,MID5算法等等。
板凳
yjgzs [专家分:10] 发布于 2007-12-30 21:26:00
老师能不能说具体点,小生功底弱,不大理解你的意思,哪位大侠能给出一段实例代码
就是加密后一定要是可以输入的数字和字母.而不是其他字符.
请指点啊
3 楼
LuckyLine [专家分:1940] 发布于 2007-12-31 23:34:00
简单点,可以用BITXOR()函数加密。下例中123是“密钥”,^_^
cs="AS45W6GHU6"
ct=""
FOR i=1 TO LEN(cs)
ch=SUBSTR(cs,i,1)
chn=ASC(ch)
ct=ct+CHR(BITXOR(chn,123))
endfor
?cs
?ct
4 楼
yjgzs [专家分:10] 发布于 2008-12-28 13:38:00
3楼给出的方法,是加密了,但加密后变成了一些乱码,不是字母和数字组成的字符串。
5 楼
foxdb [专家分:1830] 发布于 2008-12-30 02:31:00
给个最简单的“算法原理提示”你去发挥吧。。。当然你也可以把他改成用“密钥”来加密,原理是一样的。当每一个字符都匹配相应的“密钥”时,不知道“密钥”是解不开的。
cs="AS45W6GHU6"
ct=""
FOR i=1 TO LEN(cs)
ch=SUBSTR(cs,i,1)
DO CASE
CASE ASC(ch)>=48 AND ASC(ch)<58
chn=ASC(ch)-48
ct=ct+CHR((9-chn)+48)
CASE ASC(ch)>=65 AND ASC(ch)<91
chn=ASC(ch)-65
ct=ct+CHR((25-chn)+65)
CASE ASC(ch)>=97 AND ASC(ch)<123
chn=ASC(ch)-98
ct=ct+CHR((25-chn)+98)
ENDCASE
endfor
?cs
?ct
加密后的字符串就是 "ZH54D3TSF3"
6 楼
wuzhouhong [专家分:10890] 发布于 2009-01-01 01:39:00
移位密码很容易解开,只要一张纸和一杆笔。
原理这样:
移位的密码都是从一个字符集合到另外一个字符集合的映射,而且是线性的映射。其在原集合的字符出现频率=新集合中的频率。
根据大量的报文统计,字符出现的频率都是有规律的,比如“的”经常用到,根据一些最常用的字的频率,推算出密码集合中的对应字符,然后再利用已解密的碎片继续解密,有时候只要出现一两个关键字,就能解读出全部报文!
另外,双字符的线性位移很容易被看出,比如AA到了密码变成了YY,我就知道这个YY其实就是AA,那么我故意制造一个伪信息,其中只有一个双字符AA,获得密码后很容易就得到了YY的加密偏移量,其余字符加或减这个偏移量就能还原出原来的信息。
7 楼
0901chang [专家分:10660] 发布于 2009-01-01 11:53:00
好比我们上街,单车上锁之后,大部分不会丢失。在不安全的地方,最好放到存车处。如果上一个比车还要大还要重的锁,被偷的比例回更底。既便是保险柜,若无人看管,高手都能打开,注意,挑选看守值钱东东的人员时,一定不能选会开保险柜的。
搂住的东东,也许可以比做我们日常的单车,用一个普通的锁就可以了,5楼已经送了一把锁给搂主。
8 楼
foxdb [专家分:1830] 发布于 2009-01-01 18:46:00
6楼 wuzhouhong 所讲的话太看小我们狐友的“IQ”了! 还是7楼 0901chang 狐友看懂了我的意思。知道抗战时期中美联合成立的“黑室”吗?知道啥是“永不重复的密钥”?知道“大地”这本书吗?下面给你VFP的“演示”程序你看看。。。。。为了方便就借用0901chang 狐友的回帖内容来示范,以表示对他的感谢!。。。。
*加密“演示”
?
?
cs="好比我们上街" && 明码
ke="最好放到存车处" && 密钥
ct=""
i=1
DO WHILE i<LEN(cs)
ch=SUBSTR(cs,i,2)
ky=SUBSTR(ke,i,2)
chn=ASC(ch)+(ASC(ky)-45120)
IF chn>55110
chn=chn-4995
ENDIF
ct=ct+CHR(chn)
i=i+2
ENDDO
?cs && 明码
?ke && 密钥
?ct && 加密后的字符串为 “ 晤糑諻蒁蝩罧 ”
?
?
*解密“演示”
cs="晤糑諻蒁蝩罧" && 加密后的字符串
ke="最好放到存车处" && 密钥
ct=""
i=1
DO WHILE i<LEN(cs)
ch=SUBSTR(cs,i,2)
ky=SUBSTR(ke,i,2)
chn=ASC(ch)-(ASC(ky)-45120)
IF chn<45120
chn=chn+4995
ENDIF
ct=ct+CHR(chn)
i=i+2
ENDDO
?cs && 加密后的字符串
?ke && 密钥
?ct && 解密后的字符串 "好比我们上街"
看到了吧!请6楼研究以下“晤糑諻蒁蝩罧”这几个字符串,看看有啥“规律”能推算得出“最好放到存车处”吗?哈哈。。。要是我用“大地”中文版这本书或一次性“随机字符”(美国发射核弹就是用他)做密钥并不告诉你,你能解吗?当然上面的“演示”只是个原理,如要真正实用还有很长的“路”要走....我已给出思路,我也不便在大庭广众再细讲,还请大家原谅。。。为了“安全”欢迎私下交流。。。
9 楼
0901chang [专家分:10660] 发布于 2009-01-01 22:04:00
以前认为那种公开密钥的加密算法非常安全,现在也变了,好像是2005年,中国的一个博士攻克了其解密的算法,是一个女博士,她成为了全世界的第一解密高手,现在连银行的64位加密密钥也不能保证100%的安全了。
10 楼
0901chang [专家分:10660] 发布于 2009-01-01 22:14:00
乌鸦20多年以前做高炮和地空导弹数据链时,试验信道使用国产的数字加密电台705B。
同等的通讯装备,霉菌早25-30年。
我来回复