Tag: cryptoapi

CryptoAPI C ++使用AES与Java互操作

我正在尝试使用CryptoAPI在C ++中加密并使用SunJCE解密Java。 我已经获得了RSA密钥 – 并在测试字符串上进行了validation。 但是,我的AES密钥不起作用 – 我得到javax.crypto.BadPaddingException: Given final block not properly padded 。 C ++加密: // init and gen key HCRYPTPROV provider; CryptAcquireContext(&provider, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT); // Use symmetric key encryption HCRYPTKEY sessionKey; DWORD exportKeyLen; CryptGenKey(provider, CALG_AES_128, CRYPT_EXPORTABLE, &sessionKey); // Export key BYTE exportKey[1024]; CryptExportKey(sessionKey, NULL, PLAINTEXTKEYBLOB, 0, exportKey, &exportKeyLen); // skip […]

数字签名SunMSCAPI提供商和MS Crypto API

我想与SunMSCAPI提供商签署文件。 由于需要使用MS Crypto API导入公钥和签名。 通常使用SHA1withRSA生成签名,最终使用big-endian到little-endian(字节顺序)转换。 //generate keystore with java keytool $Keytool -genkey -alias tsign -keystore c:\test\tsignjks.p12 – keyalg rsa -storetype pkcs12 在Java应用程序中: //for signing and getting keystore, assuming windows certificate is installed ..ks = KeyStore.getInstance(“Windows-MY”,”SunMSCAPI”); PrivateKey priv = ks.getKey(“tsign”,password); Signature rsa = Signature.getInstance(“SHA1withRSA”,”SunMSCAPI”); rsa.initSign(priv); .. rsa.update(buffer, 0, len); .. byte[] realSig = rsa.sign(); //for writing […]

Java安全性 – MSCAPI提供者:如何在没有密码弹出的情况下使用?

我已经设法在我的应用程序中使用Sun的MSCAPI提供程序。 我现在遇到的问题是它总是弹出一个窗口,要求输入密码,即使我已经在代码中提供了密码。 这是一个问题,因为我需要在Web服务中使用加密function。 这是我现在的代码: String alias = “Alias to my PK”; char[] pass = “MyPassword”.toCharArray(); KeyStore ks = KeyStore.getInstance(“Windows-MY”); ks.load(null, pass); Provider p = ks.getProvider(); Signature sig = Signature.getInstance(“SHA1withRSA”,p); PrivateKey key = (PrivateKey) ks.getKey(alias, pass) sig.initSign(key); sig.update(“Testing”.getBytes()); sig.sign(); 这工作得很好,但是在最后一行运行时我得到一个弹出窗口询问密码。 我该如何预防呢?

Java文件加密

我正在尝试使用AES算法编写一个简单的程序来加密和解密文件。 我没有加密问题,但解密.. public static void main(String[] args) throws NoSuchAlgorithmException, FileNotFoundException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { // Инициализация секретных ключей KeyGenerator keyGenS = KeyGenerator.getInstance(“AES”); keyGenS.init(128); SecretKey sKey1 = keyGenS.generateKey(); SecretKey sKey2 = keyGenS.generateKey(); // Перевод секретных ключей в строку и запись в файл String key1 = SecretKeyToString(sKey1); String key2 = SecretKeyToString(sKey2); spreader.write(fileName1, key1); spreader.write(fileName2, key2); spreader.write(fileNameS1, […]