曾经实验室的带动,加上最近在上网络安全与管理的专业选修课,对加密算法有了浓厚的兴趣。老师留了一次作业,用自己的学号为密钥,加密一句话,使用RC4加密算法。
图书馆查找资料,发现RC4算法还是比较容易理解的。于是动手实现出来。不多说废话,还是贴代码吧。我写的注释还算清楚。
先贴一个含main函数的核心算法类,有测试,可以看看最后输出了什么^^
import javaioUnsupportedEncodingException;
public class Arithmetic {
public static void swap(int x,int y){
int temp;
temp=x;
x=y;
y=temp;
}
public static void main(String[] args) throws UnsupportedEncodingException {
// 密钥(我的学号)
byte K[]={0,6,1,6,1,0,0,4};
int S[]=new int[256];//状态矢量S
int T[]=new int[256];//临时矢量T
// 初始化状态矢量S,同时生成临时矢量T
for(int i=0;i<256;i++){
S[i]= i;
T[i]=K[i%Klength];
}
//用T使S置换
{
int j=0;
for(int i=0;i<256;i++){
j=(j+(int)S[i]+(int)T[i])%256;
swap(S[i],S[j]);
}
}
int i = 0,j=0;
boolean tt=true;
int c=0;
int t;
byte k;//密钥流的当前字节
byte C[]="套范续"getBytes();
Systemoutprintln(C[3]);
byte P[]=new byte[Clength];
while(c<6){
i=(i+1)%256;
j=(j+S[i])%256;
swap(S[i],S[j]);
t=((S[i]+S[j])%256);
k=(byte) S[t];
// C[c]=(byte) (k^P[c]);
// Systemoutprint(C[c]+" ");
P[c]=(byte) (k^C[c]);
Systemoutprint(P[c]+" ");
c++;
}
Systemoutprintln(new String(P,"GBK"));
// byte rr[]={65};
// Systemoutprintln(new String(rr));
}
}
再来贴一下以界面展示的代码,比较长。用的就是普通的jsp+servlet。
核心类:
public class RC4 {
// 密钥(我的学号)
byte K[]={0,6,1,6,1,0,0,4};
void swap(int x,int y){
int temp;
temp=x;
x=y;
y=temp;
}
public String encrypt(String plaintext){
String ciphertext=new String();
int S[]=new int[256];//状态矢量S
int T[]=new int[256];//临时矢量T
// 初始化状态矢量S,同时生成临时矢量T
for(int i=0;i<256;i++){
S[i]= i;
T[i]=K[i%Klength];
}
//用T使S置换
{
int j=0;
for(int i=0;i<256;i++){
j=(j+(int)S[i]+(int)T[i])%256;
swap(S[i],S[j]);
}
}
int i = 0,j=0;
int c=0;
int t;
byte k;//密钥流的当前字节
byte P[]=plaintextgetBytes();
byte C[]=new byte[Plength];
while(c<Plength){
i=(i+1)%256;
j=(j+S[i])%256;
swap(S[i],S[j]);
t=((S[i]+S[j])%256);
k=(byte) S[t];
C[c]=(byte) (k^P[c]);
Systemoutprint(C[c]+" ");
c++;
}
Systemoutprintln(new String(C));
ciphertext=new String(C);
return ciphertext;
}
}
页面:
homejsp
<%@ page language="java" import="javautil,coreChangeCharset" pageEncoding="GBK"%>
<%
String path = requestgetContextPath();
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'homejsp' starting page</title>
<meta >
例如:/etc/passwd 为系统用户数据库;/etc/fdprm 为软盘参数表;/etc/group 为系统用户组数据库。
/var目录下一般为所有服务的登录的文件或错误信息文件与一些数据库等。
例如:/var/log/bootlog 为系统引导文件;/var/log/messages 为系统报错日志; /var/log/maillog 为邮箱系统日志。
扩展资料:
Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。
参考资料:
$key = "This is supposed to be a secret key !!!";
function keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++) {
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}
function encrypt($txt,$key)
{
srand((double)microtime()1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++) {
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp= substr($encrypt_key,$ctr,1)
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++;
}
return keyED($tmp,$key);
}
function decrypt($txt,$key)
{
$txt = keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++) {
$md5 = substr($txt,$i,1);
$i++;
$tmp= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
$string = "Hello World !!!";
// encrypt $string, and store it in $enc_text
$enc_text = encrypt($string,$key);
// decrypt the encrypted text $enc_text, and store it in $dec_text
$dec_text = decrypt($enc_text,$key);
//加密
function str2hex($s)
{
$r = "";
$hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for ($i=0; $i<strlen($s); $i++) ="" $r = ($hexes [(ord($s{$i}) >> 4)] $hexes [(ord($s{$i}) & 0xf)]);
return $r;
}
//解密
function hex2str($s)
{
$r = "";
for ( $i = 0; $i<strlen($s); $i="" +="2) " {
$x1 = ord($s{$i});
$x1 = ($x1>=48 && $x1<58) $x1-48 : $x1-97+10;
$x2 = ord($s{$i+1});
$x2 = ($x2>=48 && $x2<58) $x2-48 : $x2-97+10;
$r = chr((($x1 << 4) & 0xf0) | ($x2 & 0x0f));
}
return $r;
}
echo str2hex("山东");
echo "
";
echo hex2str("c9bdb6ab");
>
以上就是关于求一个实现RC4加密算法的第三方包,JAVA的全部的内容,包括:求一个实现RC4加密算法的第三方包,JAVA的、linux中/etc与/var目录,各是什么意思这两个目录下的文件有什么特点、php代码加密怎么解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)