大数跨境
0
0

一次一密加密与解密算法

一次一密加密与解密算法 云容灾备份安全治理
2018-10-21
1
导读:一次一密加密、解密算法一次一密密码系统的一个重要特性是密钥K为一个真随机序列,且密钥只使用一次。下面通过计算

一次一密加密、解密算法

一次一密密码系统的一个重要特性是密钥K为一个真随机序列,且密钥只使用一次

下面通过计算机的伪随机函数产生的随机序列作为密钥来简单演示一次一密的加密解密算法,代码示例如下:

/**
     * 一次一密加密、解密算法
     * @param str 明文(密文)
     * @param key 密钥
     * @return 密文(明文)
     */
    static char[] bitcode(char[] str, char[] key){
        int len,i;
        char[] wen;
        len = str.length;
        wen = new char[len];
        for(i=0;i<len;i++){
            wen[i]=(char) (str[i]^key[i]);
        }
        return wen;
    }

一次一密加密、解密算法实例

完整代码示例如下:

package com.cn.mimaxue;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
import java.util.Scanner;

//一次一密加密、解密算法
public class YiCiYiMi {
    static char[] key;
    /**
     * 一次一密加密、解密算法
     * @param str 明文(密文)
     * @param key 密钥
     * @return 密文(明文)
     */
    static char[] bitcode(char[] str, char[] key){
        int len,i;
        char[] wen;
        len = str.length;
        wen = new char[len];
        for(i=0;i<len;i++){
            wen[i]=(char) (str[i]^key[i]);
        }
        return wen;
    }
   
    public static void main(String[] args) throws IOException {
        int i,len;
        char[] str,miwen,mingwen;
        String go,strtemp;
        System.out.println("一次一密加密、解密算法示例!");
        Scanner input = new Scanner(System.in);
        do{
            System.out.print("请输入明文:");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            strtemp=br.readLine();
            str=strtemp.toCharArray();
            len = str.length;
            System.out.print("明文为:");
            for(i=0;i<len;i++){
                System.out.print(str[i]);
            }
            System.out.println();
            key=new char[len];
            Random r = new Random();
            System.out.print("此次加密解密的密钥为:");
            for(i=0;i<len;i++){
                key[i]=(char) (r.nextInt(10)+'0');
                System.out.print(key[i]);
            }
            System.out.println();
            miwen=bitcode(str,key);
            System.out.print("加密为:");
            for(i=0;i<len;i++){
                System.out.print(miwen[i]);
            }
            System.out.println();
            mingwen=bitcode(miwen,key);
            System.out.print("解密为:");
            for(i=0;i<len;i++){
                System.out.print(mingwen[i]);
            }
            System.out.println();
            System.out.print("是否继续(y/n):");
            go=input.next();
        }while(go.equalsIgnoreCase("y"));
        System.out.println("程序结束!");
    }

}


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读7.5k
粉丝0
内容2.2k