adidas1981
My Links
BlogJava
首页
新随笔
联系
聚合
管理
Blog Stats
Posts - 8
Stories - 17
Comments - 3
Trackbacks - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2005年7月 (8)
文章分类
javascript部分(6)
(rss)
java部分 (7)
(rss)
struts+eclipse(4)
(rss)
文章档案
2005年7月 (17)
JavaScript手册
JavaScript手册
(rss)
搜索
最新评论
1. re: html:link 的 onclick 事件
删除操作时在哪里进行的
--删除操作时在哪里进行的
2. re: HTML过滤文本
<
--6
3. re: 给onblur事件动态再增加一个触发函数
评论内容较长,点击标题查看
--友堂人
阅读排行榜
1. text回车事件不提交的解决方法(1262)
2. 给onblur事件动态再增加一个触发函数(633)
3. 网页的textarea自动适应高度 (295)
4. enctype="multipart/form-data" (286)
5. 常用日语(262)
评论排行榜
1. 给onblur事件动态再增加一个触发函数(1)
2. text回车事件不提交的解决方法(0)
3. enctype="multipart/form-data" (0)
4. 网页的textarea自动适应高度 (0)
5. 酷暑正在逼近!(0)
最安全的加密算法
在密码学里,有一种理想的加密方案,叫做一次一密乱码本(one-time pad)。
one-time pad的算法有以下要求:
1、密钥必须随机产生
2、密钥不能重复使用
3、密钥和密文的长度是一样的。
one-time pad是最安全的加密算法,双方一旦安全交换了密钥,之后交换信息的过程就是绝对安全的啦。这种算法一直在一些要求高度机密的场合使用,据说美国和前苏联之间的热线电话、前苏联的间谍都是使用One-time pad的方式加密的。不管超级计算机工作多久,也不管多少人,用什么方法和技术,具有多大的计算能力,都不可能破解。
一次一密的一种实现方式,如下:
public
class
OneTimePadUtil
{
public
static
byte
[] xor(
byte
[] bytes,
byte
[] keyBytes)
{
if
(keyBytes.length
!=
bytes.length)
{
throw
new
IllegalArgumentException();
}
byte
[] resultBytes
=
new
byte
[bytes.length];
for
(
int
i
=
0
; i
<
resultBytes.length;
++
i)
{
resultBytes[i]
=
(
byte
) (keyBytes[i]
^
bytes[i]);
}
return
resultBytes;
}
}
使用例子:
String plainText
=
"
温少
"
;
String keyText
=
"
密码
"
;
byte
[] plainBytes
=
plainText.getBytes();
byte
[] keyBytes
=
keyText.getBytes();
assert plainBytes.length
==
keyBytes.length;
//
加密
byte
[] cipherBytes
=
OneTimePadUtil.xor(plainBytes, keyBytes);
//
解密
byte
[] cipherPlainBytes
=
OneTimePadUtil.xor(cipherBytes, keyBytes);
这是最简单的加密算法,但也是最安全的机密算法。前天和朋友讨论到了这个问题,所以写了这篇文章。
posted on 2005-07-06 11:11
小浩
阅读(321)
评论(0)
编辑
收藏
所属分类:
java部分
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
JAVA下中文乱码问题的一些解决方案
ArrayList中的数据排序--java对象排序
Java语言的异常类使用讨论 (转)
最安全的加密算法
如何使用JCE的DES进行加密解密
项目开发规范
JSP/Servlet 中的汉字编码问题(转)