Tag: 加密

java中的简单凯撒密码

嘿我用Java编写了一个简单的caesar密码[x-​​>(x + shift-1)mod 127 + 1]我希望我的加密文本除了控制字符外都有ASCII字符(即从32开始) -127)。 如何避免0-31应用加密文本中的控制字符。 谢谢。

Java:从applet为AES256修补客户端安全策略

我在商业Web应用程序中需要AES256加密/解密。 目前一切都很好,密钥大小为128.这在加密方面并不令人满意,所以我的问题是如何最好地解决这个问题,而无需用户手动安装任何东西。 我有来自Oracle的无限制管辖jar文件,但我不知道在用户的JRE / lib / security目录中替换这些文件是否与旧版本兼容。 显然我不想破坏用户的JRE。 此外,我对我的JRE安全目录有写权限,但我认为某些用户不具备这些权限。 有没有一个简单的方法解决这个问题,或者我是否坚持使用弱加密或可能有问题的用户步骤? 更新“unrestricting” javax.crypto.JceSecurity @ntoskml你是对的。 getMaxAllowedKeyLength仍然返回有限的密钥大小,但加密成功,密钥大小== 256 :)。 如果有强加密,我将更新我的测试方法并设置密钥大小。 谢谢 >>> from javax.crypto import Cipher >>> Cipher.getMaxAllowedKeyLength(“AES”) 128 >>> from java.lang import Class >>> c = Class.forName(“javax.crypto.JceSecurity”) >>> isRestricted = c.getDeclaredField(“isRestricted”) >>> isRestricted.setAccessible(True) >>> isRestricted.set(None, False) >>> isRestricted.get(None) False >>> Cipher.getMaxAllowedKeyLength(“AES”) 128 >>> from javax.crypto import KeyGenerator […]

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, […]

PBEWithMD5AndTripleDES的密钥大小是多少?

我试图用现有代码中的PBEWithMD5AndTripleDES替换PBEWithMD5AndDES。 到目前为止,我使用的是我之前使用的相同密码,并收到此exception: java.security.InvalidKeyException:非法密钥大小 我在网上查看,看到DES使用64位密钥,而TripleDES使用128位密钥。 我不清楚我的密码短语如何用于生成密钥的细节,并且不确定在哪里完全理解这一点。 我的密码长度为260个字符。 我尝试加倍长度,但我得到了同样的例外。 我从我的密码生成一个PBEKeySpec,有一个8字节的盐和12的迭代次数。我看到有另一个构造函数接受了一个keyLength参数,但文档将其描述为“要派生”,而我不是明白。 我有一个想法,我需要修改迭代计数和/或提供一个keyLength参数,但我不想盲目地这样做而不完全理解我在做什么。 以下是我目前使用的代码的基本概要: String passphrase = … byte[] salt = … int iterationCount = 12; String algorithm = “PBEWithMD5AndTripleDES”; KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount); SecretKey key = SecretKeyFactory.getInstance(algorithm).generateSecret(keySpec); Cipher cipher = Cipher.getInstance(key.getAlgorithm()); AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount); cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); byte[] encoded = cipher.doFinal(data);

AES-256和PKCS7Padding在Java中失败

我有几个库,C#,PHP和Android,它们都以相同的方式加密/解密字符串,因此它们彼此兼容,即C#写入并加密数据到数据库,PHP可以成功解密它并返回原始字符串。 我现在需要使用标准的Java应用程序做同样的事情,所以我从我的Android库中获取代码并需要库,但我得到了一个例外。 据我所知,代码不是特定于Android的,所以它应该不是问题。 以下是我的加密function public static String encrypt(String plainPasword) { String password = “”; try { SecretKeySpec key = new SecretKeySpec(“hcxilkqbbhczfeultgbskdmaunivmfuo”.getBytes(“US-ASCII”), “AES”); IvParameterSpec iv = new IvParameterSpec(“ryojvlzmdalyglrj”.getBytes(“US-ASCII”)); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS7Padding”); cipher.init(Cipher.ENCRYPT_MODE, key, iv); byte[] encoded = cipher.doFinal(plainPasword.getBytes()); password = new String(Base64.encodeBase64(encoded)); } catch (Exception ex) { System.err.println(“Encryption Exception: ” + ex.toString()); } return password; […]

使用BouncyCastle将签名/身份validation的属性添加到CMS签名

我想使用bouncycastle生成一个简单的CMS签名。 这段代码有效! Security.addProvider(new BouncyCastleProvider()); String password = “123456”; KeyStore ks = KeyStore.getInstance(“PKCS12”); ks.load(new FileInputStream(“c:/cert_123456.p12”), password.toCharArray()); String alias = (String)ks.aliases().nextElement(); PrivateKey key = (PrivateKey)ks.getKey(alias, password.toCharArray()); Certificate[] chain = ks.getCertificateChain(alias); CMSSignedDataGenerator generator = new CMSSignedDataGenerator(); generator.addSigner(key, (X509Certificate)chain[0], CMSSignedDataGenerator.DIGEST_SHA1); ArrayList list = new ArrayList(); for (int i = 0; i < chain.length; i++) { list.add(chain[i]); } CertStore chainStore […]

没有解密我加密的内容

我有一个奇怪的问题…… 基于我的解决方案将硬编码文件解密为byte [] 所以,我写了一个小的Cypher类来帮助解密/解密…它曾用于模拟在某个地方硬编码的密钥和另一个存储在其他地方的预先加密的密钥。 但这有点无关紧要。 加密过程是这样的: 检索硬编码的字节数组 用它来解密key2 使用key2来解密数据 使用key1进一步解密数据 有解密数据 我将加密数据存储为hex字符串,使用这两个函数进入那里 private static String byteArrayToHexString(byte[] b) { StringBuffer sb = new StringBuffer(b.length * 2); for (int i = 0; i < b.length; i++) { int v = b[i] & 0xff; if (v < 16) { sb.append('0'); } sb.append(Integer.toHexString(v)); } return sb.toString().toUpperCase(); } private static […]

坏填充exception – pkcs11中的RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING

我的应用程序正在访问e-Token以解密来自服务器的响应 来自服务器的会话密钥使用以下方式加密: – RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING 我正在使用SunPKCS11 Provider来实现对加密令牌的访问。 每当我尝试使用上述机制解密时,即使用RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING,我得到: – **javax.crypto.BadPaddingException: doFinal() failed at sun.security.pkcs11.P11RSACipher.implDoFinal(P11RSACipher.java:328) at sun.security.pkcs11.P11RSACipher.engineDoFinal(P11RSACipher.java:353) at javax.crypto.Cipher.doFinal(DashoA13*..) 以下是我的代码: – private static final String TRANSFORMATION = “RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING”; private static final String SECURITY_PROVIDER = “BC”; private static final String DIGEST_ALGORITHM = “SHA-256”; private static final String MASKING_FUNCTION = “MGF1”; […]

当Decrypting Image时,给出了javax.crypto.BadPaddingException:pad块损坏的Android

嗨,我是Android和图像加密的新手。 我的情况是这样的, 首先,我正在加密图像文件。 然后我将它上传到服务器 从我的应用程序我下载加密图像并将其保存在SD卡中。 然后我在将它设置为imageView之前解密它 (请参阅我已经使用的所有需要​​方法的底部..) 但我得到javax.crypto.BadPaddingException:解密时pad块损坏。 我读了一些关于这个例外的文章,但都是关于文本加密的。 你能帮我避免这个吗? 先感谢您 Image Encrption使用… private byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”); Cipher cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(clear); return encrypted; } 在这里我也保存了其他几张图片,所有图像都成功保存在SD卡中… for (int i = 0; i < imageUrls.size(); i++) { File file = […]

无法在Android应用程序中解密String

我正在尝试开发一个可以加密和解密值的android应用程序。 所以我按照这个链接在这里输入链接描述 到目前为止,我能够加密文本,但我无法解密它。 在我的代码中,我使用了相同的AESHelper类,该类在提供的链接中提到。 以下是我用来加密和解密值的活动类 import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { EditText text ; TextView encp,decriptom; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (EditText) findViewById(R.id.editText); encp = (TextView) findViewById(R.id.valueexcript); decriptom = (TextView) findViewById(R.id.deexcript); } @Override public […]