账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nodejs 和 java 进行 rc4 加密得到的结果不一样
    43
    0

    同时在对一个

    buffer<03 01 00 00 02 00 00 00>

    进行加密。
    java 和 c 得到的结果是

    CA 66 C4 5D 90 E7 30 01

    nodejs 得到的结果是

    6f 61 f8 95 ab ba aa 90

    不一样 什么原因导致的呢?

    java 代码地址 https://ideone.com/V5Nzos

    import java.nio.ByteBuffer;
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    
    class Test {  
        public static void main(String[] args) {  
    
            try {
    
                byte[] bs = {
                (byte)0x03, (byte)0x01, (byte)0x00, (byte)0x00, 
                (byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00
                };
                ByteBuffer buff = ByteBuffer.wrap(bs);
                Cipher instance = Cipher.getInstance("RC4");
                instance.init(Cipher.DECRYPT_MODE, new SecretKeySpec(("c2eWxyNe5c4G9GUHMQECzcUEWUK8MWkk" + "48LoIDEv8EQOrmwPirikDa3iUaickMSq").getBytes(), "RC4"));
                instance.update(buff.array(), 0, 8, buff.array(), 0);
                byte[] array = buff.array();
                for (int j=0; j<array.length; j++) {
                    System.out.format("%02X ", array[j]);
                }
                System.out.println();
                //加密结束 结果:CA 66 C4 5D 90 E7 30 01
            
                
            }catch (Throwable th) {
                System.out.println(th);
                System.exit(0);
            }
        }
    
    
    }

    nodejs 代码地址
    https://ideone.com/XQVhRM

    var crypto = require('crypto');
    //en
    function cipher (buf) {
        var rc4Key = "c2eWxyNe5c4G9GUHMQECzcUEWUK8MWkk"
        var cipher = crypto.createCipher('rc4', (rc4Key+"48LoIDEv8EQOrmwPirikDa3iUaickMSq"),1);
        var cryptedBuffers = [cipher.update(buf)];
        cryptedBuffers.push(cipher.final());
        var crypted = Buffer.concat(cryptedBuffers);
        return crypted;
    };
    var buf1 = Buffer.from([
        0x03, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
    ]);
     
    console.log(cipher((buf1)));
    //<Buffer 6f 61 f8 95 ab ba aa 90>
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部