- UID
- 110608
- 积分
- 328
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-3-7
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天斑主又给我加币了,想想怪不好意思的,自己在这里学了好多
却没有什么好东东回报大家,
想来想去,还是公开一下自已刚刚写的代码吧,也算是为大家做贡献吧
在没有公开前这代码可能还能用,公开后就不知道了
这是一种加密算法.因为数学不好,无法验证其保密性如何.
参考:
http://www.google.com/search?q=% ... dow=1&start=10&sa=N
[pcode=lisp,true]
(defun crypt (min_wen mi_yao)
(while (< (length mi_yao) (length min_wen))
(setq
mi_yao (strcat mi_yao mi_yao) )
)
(setq min_wen_lst min_wen)
(setq mi_yao_lst mi_yao)
(setq i% 0
mi_wen nil)
(repeat (length min_wen_lst)
(progn
(setq mi_wen_si (boole 6 (nth i% min_wen_lst) (nth i% mi_yao_lst)))
;(setq mi_wen_si (boole 6 mi_wen_si (nth i% mi_yao_lst)))
(setq mi_wen (append mi_wen (list mi_wen_si)))
(setq i% (1+ i%))
);_progn
);_repeat
mi_wen
)
;;;加密
(setq min_wen (vl-string->list "www.wujimmy.com"))
(setq mi_yao (vl-string->list"wujimmy"))
(setq mi_wen(crypt min_wen mi_yao))
;;;加密
;;;解密
(setq mi_yao (vl-string->list"wujimmy"))
(setq min_wen (crypt mi_wen mi_yao))
(setq min_wen (vl-list->string min_wen))
;;;解密
[/pcode]
***************************************************************
***以下内容来自internet,非本人作品,如果....那么....
***************************************************************
在密码学里,有一种理想的加密方案,叫做一次一密乱码本(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 = (byte) (keyBytes ^ bytes);
}
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); |
|