首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用字节数组作为键对字符串进行异或运算?

如何使用字节数组作为键对字符串进行异或运算?
EN

Stack Overflow用户
提问于 2019-05-08 10:33:53
回答 1查看 1.4K关注 0票数 1

我正在尝试使用异或加密对字符串进行编码,并使用byte array作为密钥:

String encodedString = myString XOR myKey

我没有太多的密码学经验,所以我还没有找到一种方法来实现这一点。

作为这个问题的更新,我发现myKey也是一个字符串,并且与myString具有相同的长度

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 03:49:03

终于明白了!

希望这对其他人有用。

这就是对我有效的方法(2个字符串内的XOR):

public static String xorHex(String a, String b) {
    // TODO: Validation
    char[] chars = new char[a.length()];
    for (int i = 0; i < chars.length; i++) {
        chars[i] = toHex(fromHex(a.charAt(i)) ^ fromHex(b.charAt(i)));
    }
    return new String(chars);
}


private static int fromHex(char c) {
    if (c >= '0' && c <= '9') {
        return c - '0';
    }
    if (c >= 'A' && c <= 'F') {
        return c - 'A' + 10;
    }
    if (c >= 'a' && c <= 'f') {
        return c - 'a' + 10;
    }
    throw new IllegalArgumentException();
}

private static char toHex(int nybble) {
    if (nybble < 0 || nybble > 15) {
        throw new IllegalArgumentException();
    }
    return "0123456789ABCDEF".charAt(nybble);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56032759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档