搜狗笔试题——加密解密

public class Test {
    public static void encode(byte[] in, byte[] out, int password) { 
        int len = in.length; 
        //原理: a^b^b = a
        int seed = password ^ 0x8c357ca5; 
        for (int i = 0; i < len; ++i) { 
            byte a = (byte) ((in[i] ^ seed) >>> 5);//取得byte的前3位,并存放于低3位
            byte b = (byte) (((((int) in[i]) << 16) ^ seed) >>> (16 - 3));// 取得低5位存放于高5位
            a &= 0x7; //取低3位
            b &= 0xf8; //取高5位
            out[i] = (byte) (a | b); //合并
            seed = (seed * 3687989 ^ seed ^ in[i]); //如果这里是IN,解密就是OUT,相反亦然
        } 
    }
//解密是加密的反向过程   
public static void decode(byte[] in, byte[] out, int password) { 
        int len = in.length;
        int seed = password ^ 0x8c357ca5; 
        for (int i = 0; i < len; ++i) { 
         byte a = (byte) (((in[i]&0x7) <<5) ^seed); //取低3位回移5位,成为一个字节
         byte b = (byte) ((((((int) in[i])&0xf8) << 13) ^ seed) >>> 16); //取高5位回移,13位,最后这几位成为了高5位
         a &= 0xe0;//取高3位
         b &= 0x1f;//取低5位
         out[i] = (byte) (a | b); 
         seed = (seed * 3687989 ^ seed ^ out[i]);//这里是OUT
        } 
    }
    public static void main(String[] args) throws Exception { 
        int password = 0xe87dd9d3; 
        byte[] buf1 = { 29, -16, 96, 43, -85, 25, -96, 83, 13, 66, -109, 49, -111, 0, 60, -101, 99, -86, -38, 86, -35, 
                48, 23, 83, -102, 25, 73, -116, -101, -88, -5, 14, -14, -112, 87, -87, 2, 108, -58, 40, 56, 12, 108, 
                77, 83, 38, 20, -114, }; 
        byte[] buf2 = new byte[buf1.length]; 
        decode(buf1, buf2, password); 
        System.out.println(new String(buf2, "GBK")); 
    } 
} 
主要利用了(1):解密是加密的反过程(2):a^b^b=a
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值