java进行加密,C进行解密 可行吗,哪里有相应两个代码下载?

解决方案 »

  1.   

    java 加密用得是
      /**
       * 根据参数字符串生成DES密钥
       */
      public static SecretKey getDeskey(String key) throws Exception {
           try{
     byte[] key_byte = key.getBytes();
     DESKeySpec deskeyspec = new DESKeySpec(key_byte);
     SecretKeyFactory skf = SecretKeyFactory.getInstance("DES", "SunJCE");
     return (SecretKey) skf.generateSecret(deskeyspec);
           }
           catch(Exception e)
           {
     throw new Exception("生成DES密钥异常!");
           }
      }  /**
       * DES加密
       */  public static String DESEncrypt(String data,String key)
      {
        String s ="";
        try{
          SecretKey deskey = getDeskey(key);
          Cipher c1 = Cipher.getInstance(Algorithm);
          c1.init(Cipher.ENCRYPT_MODE,deskey);
          byte[] cipherByte = c1.doFinal(data.getBytes());
          s = new sun.misc.BASE64Encoder().encode(cipherByte);
        }catch (NoSuchAlgorithmException e1) {e1.printStackTrace();}
         catch (NoSuchPaddingException e2) {e2.printStackTrace();}
         catch (Exception e3) {e3.printStackTrace();}     return s;
      }c加密 用得是 http://www.vccode.com/file_show.php?id=1823为什么加密后得得到得密文分别不同
      

  2.   

    Java里面不支持位运算,而c是支持的,很多算法需要位运算。
    但DES是基于8位(即字节加解密)的,应该出来的结果是一样的,你可以将两个结果比较看看,也许Java加密后又采用的其它封装格式,如再进行Base64编码。
      

  3.   

    都说过了,在实现上可能会有不一样的地方,就像前面的仁兄所说,Java是不支持位运算的,你检查一下解出来的结果与原文有什么联系,例如是不是每个字节的高位与低位对调了...我最近有些忙所以不能帮你看代码,不好意思。