自创简易加密算法

为了应对忘记密码的问题,设计了一种基于异或的对称加密算法。该算法使用一个盐值和随机整数数组作为密钥,对数据进行异或加密,加密结果以16进制字符串形式保存,方便存储。解密时,将字符串转换回字节数组,再进行异或操作还原数据。
摘要由CSDN通过智能技术生成

前几日和同事聊天,说到经常忘记密码,但记在一些地方,又不放心。我们就想,要是实现一个加密算法,每次记录加密结果,需要时再解密,那问题不就迎刃而解了嘛。

后来根据需求,设计了一个基于异或的对称加密算法。算法非常简单:

1.先定义一个由一系列不规则字符组成的盐值(SALT),然后生成一个密钥,密钥是一个整数数组,里面的值随机生成,对应盐值字符串的下标。

2.加密时,根据密钥与盐值生成一个用来加密的字节数组。

3.通过这个字节数组,与被加密数据的字节数组进行异或操作

4.返回加密结果,由于异或的特性,解密过程同加密过程。


后来经过一些修改,将加密的字节数组转换为对应的16进制字符串(4位二进制表示一位16进制,根据这个规律生成)。这样就能将任何数据加密为一串字符串,解密时,先将这串字符串转换为对应的字节数组,再进行解密还原。


老规矩,上王者(呸,代码 最近有些沉迷游戏):

package com.myself.tryit;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA
 * Date: 2017/12/8
 * Time: 上午11:04
 *
 * @author 陈樟杰
 */
public class EncryptDecrypt {
    /**
     * 盐值
     */
    private static final String SALT = "dfsad@#%$@TDGDF%$#%@#%WFRGFDHJKcvxznmfdsgdfgs2432534fgdf46t";
    /**
     * 内部密钥
     */
    private static final int[] KEY = {
            23, 22, 24, 4, 51, 26, 37, 27, 24, 6, 26, 38, 29, 35, 18, 21, 14, 3, 12, 4, 41, 39, 18, 44, 54, 21, 33, 35, 31, 22, 34, 53, 51, 44, 8, 12, 3, 0, 28, 1, 48, 9, 51, 57, 20, 44, 27, 3, 16, 48
    };

    /**
     * 16进制映射表
     */
    private static final Map MMP = new HashMap(12);

    static {
        short i = 10;
        for (; i < 16; i+
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值