草庐IT

php - 我如何对这些 base64 数字进行异或运算?

我有5个二进制字符串base64_encode()'edwAD4Af8B/gHuA/4BzgP1A/8P/h//f/xv+z30D9IDSAE=AAAgCPgf/B/4H/w1+B74Gfg/+B/8P/4f/D/8HwABAAA=AAAAAMB/wP/A/8B/4HvAf+B/+n/3P/Y//z/4n4CDgAE=AAAAXcB/wH/Af8B/wHfAP+B/6H/xf+7//r/4f0CngFY=AAiwifAP+B/4D/gf8B74D/gd8V/4H/gP8B/8vwABAAA=AAAAAAAA/QD/Af4B/iP+A/wD/A/+//7/+B+AAwAAAAA=我如何对

php - 这个基于异或的加密函数安全吗?

我在这里尝试做的是创建一个函数,每次调用时将相同的输入加密为完全不同的输出。此函数的基础是异或,但要防止容易发现字符串中的重复模式。我添加了基于时间和字符串部分的随机散列,以在解密时进行self验证。我所要求的是,如果我在这里犯了任何类型的错误,可能会向有经验的人显示隐藏的文本,而无需对字符串进行暴力破解。(我知道php有一个仅用于加密的模块,但这是一个糟糕的版本,以防加密模块不可用。)第二:我不要求你重写这个函数或为我写一些东西,我要求的是简单的指导我做错了什么。我知道一个可能的安全漏洞是我默认使用salsa,它对空字符串全为零,但优点是这是php中可用的最长哈希,其次,哪个傻瓜会使

java - 按位异或 java long

我在Ubuntu12.04上使用OracleJava7.51,并尝试这样做longa=0x0000000080000001^0x4065DE839A6F89EEL;System.out.println("result"+Long.toHexString(a));Output:resultbf9a217c1a6f89ef但我期望结果是4065de831a6f89ef,因为^运算符在Java中是按位异或。我读错了Java规范的哪一部分? 最佳答案 您需要在第一个整数文字的末尾添加一个L:longa=0x0000000080000001L

Java 通过异或 2 个字节创建一个字节

我有2个字节数组,每个包含4个字节(byte1[]、byte2[]),我想对它们进行异或以创建一个新的4字节数组(byte3[]),我该怎么做?(甚至一次做每个字节,然后将它们放入新数组) 最佳答案 您需要将它们转换为整数(无损失,原始加宽),执行异或,然后使用位掩码将结果int转换回字节。//converttointsandxorintone=(int)byte1[0];inttwo=(int)byte2[0];intxor=one^two;//convertbacktobytebyteb=(byte)(0xff&xor);例子S

java - Java 中按位异或的作用是什么?

给定:publicclassSpock{publicstaticvoidmain(String[]args){Longtail=2000L;Longdistance=1999L;Longstory=1000L;if((tail>distance)^((story*2)==tail)){System.out.print("1");}if((distance+1!=tail)^((story*2)==distance)){System.out.print("2");}}}为什么这个示例代码没有输出任何东西? 最佳答案 首先,如果你得到t

使用按位异或的 Java 字符串比较

我在产品代码中发现了以下代码片段。它使用按位XOR进行字符串比较。这比String.equals(Objecto)方法好吗?作者在这里想达到什么目的?privatestaticbooleancompareSecure(Stringa,Stringb){if((a==null)||(b==null)){return(a==null)&&(b==null);}intlen=a.length();if(len!=b.length()){returnfalse;}if(len==0){returntrue;}intbits=0;for(inti=0;i对于上下文,等同的字符串是身份验证toke

java - java中二进制字符串的异或

我正在使用以下代码对2个字符串进行异或运算Stringlseq="0011111111101111111111111100101101111100110000001011111000010100";Stringtseq="0011111111100000110011001100110011001100110011001100110011001100";StringBuildersb=newStringBuilder();for(inti=0;i上面的代码给出了正确的输出:0000000000001111001100110000011110110000000011000111001011

JAVA - 按位异或赋值运算符如何在此给定解决方案中工作

我最近在做一些编码挑战,这是问题之一。Anon-emptyzero-indexedarrayAconsistingofNintegersisgiven.Thearraycontainsanoddnumberofelements,andeachelementofthearraycanbepairedwithanotherelementthathasthesamevalue,exceptforoneelementthatisleftunpaired.Findtheunpairedvalue.Forexample,givenarrayA:A[0]=9A[1]=3A[2]=9A[3]=3A[4

java - 在 Java 中异或两个 double

如何在JAVA中对两个double进行异或运算?简单的“^”不适用于double...我是否必须将double转换为二进制形式并按位进行?还是有其他办法? 最佳答案 如果你想按位执行此操作,则需要使用Double实用函数来获取long表示,然后在最后转换回double:doublec=Double.longBitsToDouble(Double.doubleToRawLongBits(a)^Double.doubleToRawLongBits(b)); 关于java-在Java中异或两个

java - 两个短整数的异或

我正在以传统方式使用XOR^运算符计算两个短整数的XOR。下面是方法-shorta=197;shortb=341;shorty=(short)(a^b);然而,XOR总是返回整数,但在我的例子中,输入是短整数,这就是我将short转换为XOR输出的原因。XOR可以用不同的方式计算(例如:使用BigInteger等)但性能方面(更少的时间)哪种方式最适合短整数?在牢记性能的同时,我是否应该首先使用Integer.toBinaryString(number)将每个短整数转换为二进制数,然后应用按位异或? 最佳答案 shorts1=...