本篇文章给大家谈谈数字加密解密例子以及对应的知识点,希望对各位有所帮助。
数字加密方法:将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
数据加密算法是一种对称加密算法,是使用最广泛的密钥系统,特别是在保护金融数据的安全中;密码算法是加密算法和解密算法的统称,它是密码体制的核心,密码算法可以看成一些交换的组合,当输入为明文时,经过这些变换,输出就为密文,此过程为加密算法。
数字加密标准(DES)
对每个64位的数据块采用56位密钥。加密的过程可以用若干种模式进行操作包括16次循环或操作。虽然它被认为是“强”加密,许多公司使用三个密钥,“三重数字加密标准(DES)”。这并不是说,DES加密信息不能被破解。早在1997年,另一个加密方法公钥加密算法(Rivest-Shamir-Adleman)的拥有人悬赏一万美元来破解数字加密标准信息。
#includestdio.h
void code(char *p)
{
for(int i=0;i4;i++)
{
p[i]=(p[i]-41)%10+48;
}
}
void uncode(char *p)
{
for(int i=0;i4;i++)
{
p[i]=(p[i]-45)%10+48;
}
}
main()
{
char num[4];
printf("请输入一个4位数:\n");
scanf("%s",num);
code(num);
printf("密文为%s\n",num);
uncode(num);
printf("原数为%s\n",num);
}
可能很长 ,这是在我以前一个程序里摘出来的。
原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。
#define CODE_SIZE 10
int password()
{
FILE *fp;
char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;
while (1)
{
fp = fopen("password.txt", "r");
if (fp == NULL)
{
printf("第一次运行,请输入初始密码(最多8位):\n");
scanf("%s", s1);
printf("请再次输入初始密码:\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("创建文件失败退出\n");
getch();
exit(1);
}
else
{
//对s1加密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
printf("初始密码创建完成.\n");
}
}
else
{
printf("两次输入的密码不一致!\n");
}
fclose(fp);
}
else
{
fgets(s1, CODE_SIZE, fp);
fclose(fp);
printf("输入密码:\n");
scanf("%s", s2);
//对s1解密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] - i;
}
loop:
if (strcmp(s1, s2) == 0)
{
printf("-----密码正确-----\n");
printf("-----请选择功能-----\n");
printf("-----1:修改密码-----\n");
printf("-----2:进入通讯录-----\n");
scanf("%d", fun);
switch (fun)
{
case 1: printf("请输入新密码\n");
scanf("%s", s1);
printf("请再次输入新密码\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("文件错误!\n");
}
else
{ //对s1加密
for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
fclose(fp);
printf("密码修改成功\n");
}
}
else
{
printf("两次输入的密码不一致,修改失败\n");
}
break;
case 2: return 1;
default: printf("无效指令\n");
}
}
else
{
printf("密码错误\n请重新输入\n");
scanf("%s", s2);
goto loop;
}
}
printf("------------------\n\n\n\n");
}
}
加多一个判断,当输入的长度小于指定长度的时候,出错;
如果超出指定长度,则取前几位,譬如指定6位,输入123, 出错;输入123456789,那就只处理123456,忽略后面的789
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
System.out.print("请输入加密(解密)和要处理的数字个数:1为加密,2为解密; ");
Scanner scanner = new Scanner(System.in);
String[] input1 = scanner.nextLine().split("\\s+");
String choice = input1[0];
int count = Integer.parseInt(input1[1]);
System.out.print("请输入要处理的数字,用空格隔开:");
String input = scanner.nextLine().replaceAll("\\s+", "");
if(input.length() count){
throw new Exception("不足" + count + "位数字,请检查输入");
}else if(input.length() count){
System.out.println("太多数字,将处理前" + count + "个数字:" +
input.substring(0, 6));
input = input.substring(0, 6);
}
if(choice.equals("1")){
if(input.length() count){
}
String encode = EncodeUtil.encode(input);
System.out.println("加密后的数字是: " + encode);
}else{
String decode = EncodeUtil.decode(input);
System.out.println("解密后的数字: " + decode);
}
}
}
class EncodeUtil{
private static MapString, String encodeMap = null;
private static MapString, String decodeMap = null;
public final static String encode(String strToEncode){
if(encodeMap == null){
encodeMap = new HashMapString, String();
encodeMap.put("0", "7");
encodeMap.put("1", "5");
encodeMap.put("2", "9");
encodeMap.put("3", "1");
encodeMap.put("4", "3");
encodeMap.put("5", "6");
encodeMap.put("6", "8");
encodeMap.put("7", "0");
encodeMap.put("8", "2");
encodeMap.put("9", "4");
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i strToEncode.length(); i++){
sb.append(encodeMap.get(String.valueOf(strToEncode.charAt(i))));
}
return sb.toString();
}
public final static String decode(String strToDecode){
if(decodeMap == null){
decodeMap = new HashMapString, String();
decodeMap.put("7", "0");
decodeMap.put("5", "1");
decodeMap.put("9", "2");
decodeMap.put("1", "3");
decodeMap.put("3", "4");
decodeMap.put("6", "5");
decodeMap.put("8", "6");
decodeMap.put("0", "7");
decodeMap.put("2", "8");
decodeMap.put("4", "9");
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i strToDecode.length(); i++){
sb.append(decodeMap.get(String.valueOf(strToDecode.charAt(i))));
}
return sb.toString();
}
}
------------------测试
C:\Program Files\IBM\RAD 7\jdk\binjava Test
请输入加密(解密)和要处理的数字个数:1为加密,2为解密; 1 6
请输入要处理的数字,用空格隔开:1 2 3
Exception in thread "main" java.lang.Exception: 不足6位数字,请检查输入
at Test.main(Test.java:19)
C:\Program Files\IBM\RAD 7\jdk\binjava Test
请输入加密(解密)和要处理的数字个数:1为加密,2为解密; 1 6
请输入要处理的数字,用空格隔开:1 2 3 4 5 6 7
太多数字,将处理前6个数字:123456
加密后的数字是: 591368
C:\Program Files\IBM\RAD 7\jdk\binjava Test
请输入加密(解密)和要处理的数字个数:1为加密,2为解密; 1 6
请输入要处理的数字,用空格隔开:1 9 9 7 7 1
加密后的数字是: 544005
C:\Program Files\IBM\RAD 7\jdk\binjava Test
请输入加密(解密)和要处理的数字个数:1为加密,2为解密; 2 6
请输入要处理的数字,用空格隔开:5 4 4 0 0 5
解密后的数字: 199771
1、首先通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后按照一个固定数目进行偏移后被替换成密文。
2、在使用凯撒密码时需要将自己想加密的内容写下来,加密时需要通过字母加密,则写加密内容时需将内容用英文表达或用汉语拼音表达。
3、然后确定偏移方向和偏移度,即向前还是向后偏移,以及偏移的位数,都是向后偏移度为3,则A—D,B—E,下面就以该加密条件进行加密。
4、将每一个字母都一一加密后按照原来的顺序写下,则完成了加密,密文的内容无法直接看出。在加密过程中若某些字母后没有字母了,则可以从头数起,即采用上述加密条件,则X—A,Y—B,Z—C。
5、若想对密文进行解密,则需找到正确的偏移方向已经偏移量,这样才能成功解密。以上就是凯撒密码的方法,这个方法可含蓄表达一些不好直接表达的内容。
var a:array[0..9]of byte=(0,1,2,3,4,5,6,7,8,9); {定义原始数字}
b:array[0..9]of byte=(7,5,9,1,3,6,8,0,2,4);{定义密文数字}
c:array[1..100]of byte;{待处理数字}
n,m,i,j:longint;
begin
read(n,m);
for i:=1 to m do
read(c[i]);{读入待处理数字}
if n=1 then{加密}
for i:=1 to m do
write(b[c[i]]);{原始数字是0,1,2,3,4,5,6,7,8,9所以不需寻找}
if n=2 then{解密}
for i:=1 to m do
for j:=0 to 9 do{寻找原始数字}
if c[i]=b[j] then
write(a[j],' ');
end.
纯手打!
Free pascal 测试通过!
Running "d:\▒α│╠ ╣¿╩╦╞µ\fpc\bin\i386-win32\ys.exe 123"
1 6
1 9 9 7 7 1
Running "d:\▒α│╠ ╣¿╩╦╞µ\fpc\bin\i386-win32\ys.exe 123"
2 6
1 9 9 7 7 1
3 2 2 0 0 3
望楼主采纳! 谢谢!
产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。数字加密解密例子的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。
本文标签:数字加密解密例子