Android安全加密:对称加密

Android安全加密专题文章索引

  1. Android安全加密:对称加密
  2. Android安全加密:非对称加密
  3. Android安全加密:消息摘要Message Digest
  4. Android安全加密:数字签名和数字证书
  5. Android安全加密:Https编程

一、凯撒密码

1. 概述

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3 的时候,所有的字母A 将被替换成D,B 变成E,由此可见,位数就是凯撒密码加密和解密的密钥。

例如:字符串”ABC”的每个字符都右移3 位则变成”DEF”,解密的时候”DEF”的每个字符左移3 位即能还原,如下图所示:

这里写图片描述

2. 准备知识

 //字符转换成ASCII 码数值
 char charA = 'a';
 int intA = charA; //char 强转为int 即得到对应的ASCII 码值,’a’的值为97

//ASCII 码值转成char
int intA = 97;//97 对应的ASCII 码’a’
char charA = (char) intA; //int 值强转为char 即得到对应的ASCII 字符,即'a'

这里写图片描述

3. 凯撒密码的简单代码实现

    /**
     * 加密
     * @param input 数据源(需要加密的数据)
     * @param key 秘钥,即偏移量
     * @return 返回加密后的数据
     */
    public static String encrypt(String input, int key) {
        //得到字符串里的每一个字符
        char[] array = input.toCharArray();

        for (int i = 0; i < array.length; ++i) {
            //字符转换成ASCII 码值
            int ascii = array[i];
            //字符偏移,例如a->b
            ascii = ascii + key;
            //ASCII 码值转换为char
            char newChar = (char) ascii;
            //替换原有字符
            array[i] = newChar;

            //以上4 行代码可以简写为一行
            //array[i] = (char) (array[i] + key);
        }

        //字符数组转换成String
        return new String(array);
    }

    /**
     * 解密
     * @param input 数据源(被加密后的数据)
     * @param key 秘钥,即偏移量
     * @return 返回解密后的数据
     */
    public static String decrypt(String input, int key) {
        //得到字符串里的每一个字符
        char[] array = input.toCharArray();
        for (int i = 0; i < array.length; ++i) {
            //字符转换成ASCII 码值
            int ascii = array[i];
            //恢复字符偏移,例如b->a
            ascii = ascii - key;
            //ASCII 码值转换为char
            char newChar = (char) ascii;
            //替换原有字符
            array[i] = newChar;

            //以上4 行代码可以简写为一行
            //array[i] = (char) (array[i] - key);
        }

        //字符数组转换成String
        return new String(array);
    }

代码输出结果:
这里写图片描述

4. 破解凯撒密码:频率分析法

凯撒密码加密强度太低,只需要用频度分析法即可破解。
在任

  • 12
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值