案例1: 换位加密解密算法
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.*
;
public class demo {
static char[] jiami(char[] str
, int n
)
{
int i
, j
, k
, d
;
int len
;
char[] temp
, miwen
, mtemp
= {};
len
= str
.length
;
if ((d
= len
% n
) != 0) {
len
= len
+ n
- d
;
}
if ((temp
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
}
if ((miwen
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
} else {
mtemp
= miwen
;
}
System
.arraycopy(str
, 0, temp
, 0, str
.length
);
for (i
= str
.length
; i
< len
; i
++) {
temp
[i
] = 32;
}
temp
[len
] = '\0';
i
= 0;
for (k
= 0; k
< n
; k
++)
{
for (j
= 0; j
< len
/ n
; j
++) {
mtemp
[i
] = temp
[k
+ j
* n
];
i
++;
}
}
mtemp
[i
] = '\0';
temp
= null
;
return miwen
;
}
static char[] jiemi(char[] str
, int n
)
{
int i
, j
, k
= 0, d
;
int len
;
char[] temp
, mingwen
, mtemp
= {};
len
= str
.length
;
if ((d
= len
% n
) != 0) {
len
= len
- d
;
}
n
= len
/ n
;
if ((temp
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
}
if ((mingwen
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
} else {
mtemp
= mingwen
;
}
System
.arraycopy(str
, 0, temp
, 0, str
.length
);
for (i
= str
.length
; i
< len
; i
++) {
temp
[i
] = 32;
}
temp
[len
] = '\0';
i
= 0;
for (k
= 0; k
< n
; k
++)
{
for (j
= 0; j
< len
/ n
; j
++) {
mtemp
[i
] = temp
[k
+ j
* n
];
i
++;
}
}
while (mtemp
[--i
] == 32) ;
i
++;
mtemp
[i
] = '\0';
return mingwen
;
}
public static void main(String
[] args
) throws IOException
{
int n
, i
;
char[] srcstr
= new char[100];
char[] miwen
;
String go
;
System
.out
.print("换位加密解密算法演示!\n");
do {
System
.out
.print("\n请先输入换位加密矩阵每行的字符数:");
Scanner input
= new Scanner(System
.in
);
n
= input
.nextInt();
System
.out
.println("请输入明文:");
BufferedReader bufferedReader
= new BufferedReader(new InputStreamReader(System
.in
));
String str
= bufferedReader
.readLine();
srcstr
= str
.toCharArray();
System
.out
.print("输入的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(srcstr
[i
]);
}
miwen
= jiami(srcstr
, n
);
System
.out
.print("\n加密后的密文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
miwen
= jiemi(miwen
, n
);
System
.out
.print("\n解密出的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
System
.out
.print("\n继续执行(y/n)?");
go
= input
.next();
} while (go
.equalsIgnoreCase("y"));
System
.out
.println("演示结束!");
}
}
案例2: 替换加密解密算法
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.Scanner
;
public class demo {
static char[] jiami(char[] str
, int n
)
{
int i
, len
;
char[] miwen
;
len
= str
.length
;
if ((miwen
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
}
for (i
= 0; i
< len
; i
++)
{
miwen
[i
] = (char) (str
[i
] + n
);
}
miwen
[len
] = '\0';
return miwen
;
}
static char[] jiemi(char[] str
, int n
)
{
int i
, len
;
char[] mingwen
;
len
= str
.length
;
if ((mingwen
= new char[len
+ 1]) == null
)
{
System
.out
.print("申请内存失败!\n");
System
.exit(1);
}
for (i
= 0; i
< len
; i
++)
{
mingwen
[i
] = (char) (str
[i
] - n
);
}
mingwen
[len
] = '\0';
return mingwen
;
}
public static void main(String
[] args
) throws IOException
{
int i
, n
;
char[] srcstr
= new char[100];
char[] miwen
;
String go
;
System
.out
.print("替换加密解密算法演示!\n");
do {
System
.out
.print("\n请先输入替换加密解密算法中的密钥:");
Scanner input
= new Scanner(System
.in
);
n
= input
.nextInt();
System
.out
.print("请输入明文字符串:");
BufferedReader bufferedReader
= new BufferedReader(new InputStreamReader(System
.in
));
String str
= bufferedReader
.readLine();
srcstr
= str
.toCharArray();
System
.out
.print("输入的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(srcstr
[i
]);
}
miwen
= jiami(srcstr
, n
);
System
.out
.print("\n加密后的密文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
miwen
= jiemi(miwen
, n
);
System
.out
.print("\n解密出的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
System
.out
.print("\n继续执行(y/n)?");
go
= input
.next();
} while (go
.equalsIgnoreCase("y"));
System
.out
.println("演示结束!");
}
}
执行结果如下:
案例3:位加密解密算法
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.Scanner
;
public class demo {
static char[] bitcode(char[] str
, char n
)
{
int i
, len
;
char[] wen
;
len
= str
.length
;
if ((wen
= new char[len
+ 1]) == null
) {
System
.out
.print("申请内存失败!\n");
System
.exit(1);
}
for (i
= 0; i
< len
; i
++) {
wen
[i
] = (char) (str
[i
] ^ n
);
}
wen
[len
] = '\0';
return wen
;
}
public static void main(String
[] args
) throws IOException
{
int i
;
char ch
;
char[] srcstr
= new char[100];
char[] miwen
;
String go
;
System
.out
.print("位加密解密算法演示!\n");
do {
System
.out
.print("\n请先输入替换加密解密算法中的密钥:");
Scanner input
= new Scanner(System
.in
);
ch
= input
.next().charAt(0);
System
.out
.print("请输入明文字符串:");
BufferedReader bufferedReader
= new BufferedReader(new InputStreamReader(System
.in
));
String str
= bufferedReader
.readLine();
srcstr
= str
.toCharArray();
System
.out
.print("输入的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(srcstr
[i
]);
}
miwen
= bitcode(srcstr
, ch
);
System
.out
.print("\n加密后的密文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
miwen
= bitcode(miwen
, ch
);
System
.out
.print("\n解密出的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++) {
System
.out
.print(miwen
[i
]);
}
System
.out
.print("\n继续执行(y/n)?");
go
= input
.next();
} while (go
.equalsIgnoreCase("y"));
System
.out
.println("演示结束!");
}
}
执行结果如下:
案例4: 一次一密加密算法
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.Random
;
import java
.util
.Scanner
;
public class demo {
static int MAX
= 100;
static char[] key
= new char[MAX
];
static int len
;
static char[] bitcode(char[] str
)
{
int i
;
char[] wen
;
if ((wen
= new char[len
+ 1]) == null
) {
System
.out
.printf("申请内存失败!\n");
System
.exit(1);
}
for (i
= 0; i
< len
; i
++) {
wen
[i
] = (char) (str
[i
] ^ key
[i
]);
}
wen
[len
] = '\0';
return wen
;
}
public static void main(String
[] args
) throws IOException
{
int i
;
char[] srcstr
= new char[MAX
];
char[] miwen
, mingwen
;
String go
;
Scanner input
= new Scanner(System
.in
);
System
.out
.printf("一次一密加密解密算法演示!\n");
do {
System
.out
.printf("请输入明文字符串:");
BufferedReader bufferedReader
= new BufferedReader(new InputStreamReader(System
.in
));
String str
= bufferedReader
.readLine();
srcstr
= str
.toCharArray();
Random r
= new Random();
len
= srcstr
.length
;
for (i
= 0; i
< len
; i
++) {
key
[i
] = (char) (r
.nextInt(10) + '0');
}
System
.out
.printf("此次加密解密演示的密钥序列为:");
for (i
= 0; i
< len
; i
++) {
System
.out
.printf("%c", key
[i
]);
}
miwen
= bitcode(srcstr
);
System
.out
.printf("\n输入的明文为:");
for (i
= 0; i
< srcstr
.length
; i
++)
System
.out
.print(srcstr
[i
]);
System
.out
.printf("\n加密后的密文为:");
for (i
= 0; i
< miwen
.length
; i
++)
System
.out
.print(miwen
[i
]);
mingwen
= bitcode(miwen
);
System
.out
.printf("\n解密出的明文为:");
for (i
= 0; i
< mingwen
.length
; i
++)
System
.out
.print(mingwen
[i
]);
System
.out
.print("\n\n继续执行(y/n)?");
go
= input
.next();
} while (go
.equalsIgnoreCase("y"));
System
.out
.println("演示结束!");
}
}
执行结果如下: