XOR加密

作者: admin 分类: 算法 发布时间: 2014-01-07 09:23 ė3,865 浏览数 61条评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)

[代替密码和换位密码]
在计算机出现前,密码学由基于字符的密码算法构成。不同的密码算法是字符之间互相代替 或者互相之间换位 ,好的密码算法是结合这两种方法,每次进行多次运算。现在的密码学变得复杂了,但原理没有改变。本质的变化是 :算法对位而不是对字母进行变换。实际上这只是字母表长度上的改变,从26个元素变为2个元素 。大多数好的密码算法仍然是代替和换位的元素组合。

[简单异或]
下面是一个简单异或的对称加解密算法。明文用一个关键字做异或运算以产生密文。因为用同一值去异或两次就可以恢复出原来的值 ,所以加密和解密都严格采用同一程序。即:
P XOR K = C
C XOR K = P
这种方法比较简单,没有实际的保密性,甚至没有计算机也能够破译。
一种思路是使用重合码计数法 找出密钥的长度,按此长度移动密文,并且和自身异或。

[异或的好处]
在算法中经常会用到异或运算。比如下面两种常见的情况:
(1) 在1,1,2,2,3,3…k,k…n,n个数的序列中,删除任意一数并求此数。
此时用XOR就比较方便,如果通过求和的话,要考虑溢出的情况,而用XOR绝对不会发生溢出。
(2) 交换两个整形变量。
x^=y;
y^=x;
x^=y;

 

 

运行结果:

pic

 

PS: 老邓的写法,也记录在这里

01.#include <iostream>
02.using namespace std;
03.int main()
04.{
05.    char Msg[133] = “This is a plaintext”;
06.    cout << Msg << endl;
07.    char Key[8] = “abcde”;
08.    for (int i = 0; i < 133; ++i)
09.        Msg[i] ^= Key[i % 8];
10.    cout << Msg << endl;
11.    for (int i = 0; i < 133; ++i)
12.        Msg[i] ^= Key[i % 8];
13.    cout << Msg << endl;
14.    return 0;
15.}

from http://blog.csdn.net/delphiwcdj/article/details/5921771#comments



只回答业务咨询点击这里给我发消息 点击这里给我发消息

学习日记,兼职软件设计,软件修改,毕业设计。

本文出自 学习日记,转载时请注明出处及相应链接。

本文永久链接: https://www.softwareace.cn/?p=676

0

一条评论

  1. Oakley Jupiter Factory Light 2014 年 5 月 6 日 下午 3:53 回复

    These kind of post are always inspiring and I prefer to check out quality content so I happy to find many good point here in the post, writing is simply great, thank you for the post
    Oakley Jupiter Factory Light http://www.tqun.com/listinfo.php?pid=2158

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量