0

我有以下 JAVA,我正在尝试使用 ChilKat(或 BouncyCastle)转换为 C# 我在 ChilKat 中有一个工作版本,但不知道如何验证这是 JAVA 代码:

private SecretKey symmKey = null;
public String encrypt(String strToEncrypt) throws  Exception
 {

     String symmEncryptMode = "DESede";
     String encString= null;

     KeyGenerator keyGen = KeyGenerator.getInstance(symmEncryptMode);
     symmKey = keyGen.generateKey();

     byte dataToEncrypt[] = strToEncrypt.getBytes();
     Cipher symmCipher = Cipher.getInstance(symmEncryptMode);
     symmCipher.init(Cipher.ENCRYPT_MODE, symmKey);
     byte[] encrypted  = symmCipher.doFinal(dataToEncrypt);
     encString= new String(Base64.encode(encrypted));
     encString = URLEncoder.encode(encString, "UTF-8");
     return(encString);
} //end method create Signature

这是我到目前为止所拥有的(它返回一个值,但我不知道如何验证,因为这是我的加密过程的三个步骤之一 - 第 3 步有效,1 和 2 是可疑的,所以我想我会一次问一个...)这使用 ChilKat 并返回一个值,但我不确定它是否正确:

  private static string EncryptStringSymmetric(string data2Encrypt, ref string passKey)
        {
            //Init Encryptor
            Crypt2 encryptor = new Crypt2();
            bool success = encryptor.UnlockComponent("Anything for 30 - day trial");
            if (success != true)
            { throw (new Exception("Crypt component unlock failed")); }

            //Encryptor Settings
            encryptor.CryptAlgorithm = "3des";
            encryptor.KeyLength = 192;
            encryptor.EncodingMode = "base64";
            encryptor.PaddingScheme = 0;
            encryptor.Charset = "utf-8";
            encryptor.CipherMode = "ecb";
            encryptor.RandomizeKey();
            passKey = encryptor.GetEncodedKey("base64");

            string eStr;

            //byte[] bytesToEncrypt = Encoding.ASCII.GetBytes(data2Encrypt);
            //eStr = encryptor.EncryptBytesENC(bytesToEncrypt);//??
            eStr = encryptor.EncryptStringENC(data2Encrypt);
            return eStr;
        }
4

0 回答 0