Articles of 加密

在Android上使用AES加密文件

所以我正在为自己制作个人项目,我正在尝试加密手机上的文件。 这些文件可以是任何东西,例如文档,照片等。现在我正在尝试使其正常工作。 当我运行加密时,它似乎正常工作并加密文件。 当我运行解密时,有时它可以工作,有时则不工作。 当它失败时,我通常会在“最终确定密码,填充块损坏”错误时出现“错误”。 我也没有使用不同的测试文件,所以它不像某些文件有效,而有些文件没有。 这是我每次尝试的两个文件。 public static void encryptfile(String path,String Pass) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException { FileInputStream fis = new FileInputStream(path); FileOutputStream fos = new FileOutputStream(path.concat(“.crypt”)); byte[] key = (salt + Pass).getBytes(“UTF-8”); MessageDigest sha = MessageDigest.getInstance(“SHA-1”); key = sha.digest(key); key = Arrays.copyOf(key,16); SecretKeySpec sks = new SecretKeySpec(key, “AES”); Cipher cipher = Cipher.getInstance(“AES”); […]

如何在跨应用程序发送Intent数据时保护它们

我正在研究我的android应用程序的安全方面。 我想知道在将一个应用程序从一个应用程序发送到另一个应用程序时保护Intent数据和附加内容的方法,这样除了这两个应用程序之外没有其他应用程序可以窥探它。 其中一种蛮力方法是使用android的加密 – 解密来编码意图数据,有没有更好的方法来实现相同的? 提前致谢。

在Android中加密/解密字符串的简便方法

我的问题是如何加密字符串 : String AndroidId; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.download_movie_activity); cancel = (Button)findViewById(R.id.img_cancle); linear= (LinearLayout)findViewById(R.id.progress); linear.setVisibility(View.GONE); String encrypted = “MzIyNTE2” + “OTQNzM4NTQ=”; Log.e(“Encrypt”, encrypted); WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wInfo = wifiManager.getConnectionInfo(); AndroidId = wInfo.getMacAddress(); AndroidId=encrypted; U如何加密我存储MAC地址的AndroidId。

使用Android指纹时出现问题:解密时需要IV。 使用IvParameterSpec或AlgorithmParameters来提供它

我正在关注Google提供的ConfirmCredential Android示例,但它只显示了如何加密数据。 当我尝试解密它时,我得到例外: java.security.InvalidKeyException: IV required when decrypting. Use IvParameterSpec or AlgorithmParameters to provide it. 我使用以下代码: String transforation = KeyProperties.KEY_ALGORITHM_AES + “/” + KeyProperties.BLOCK_MODE_CBC + “/” + KeyProperties.ENCRYPTION_PADDING_PKCS7; KeyStore keyStore = KeyStore.getInstance(“AndroidKeyStore”); keyStore.load(null); SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null); // encrypt Cipher cipher = Cipher.getInstance(transforation); cipher.init(Cipher.ENCRYPT_MODE, secretKey); String encriptedPassword = cipher.doFinal(“Some Password”.getBytes(“UTF-8”)); // decrypt cipher […]

阅读whatsapp消息

我想创建一个Android应用程序,它读取收件箱以及whatsapp消息。 我想做一个备用的东西。 虽然可以选择在whatsapp中这样做。 但我想阅读这些消息,然后从我的应用程序备份它们。 我知道whatsapp在文件系统中以加密格式存储消息。 那么有人可以告诉我如何阅读该加密文件。

Android KeyStoreException:

我的应用程序使用Android的密钥库在使用指纹进行身份validation后对某些数据进行加密。 这似乎适用于大多数设备,但我收到了OnePlus2用户的错误报告,但有例外 android.security.KeyStoreException: Signature/MAC verification failed at android.security.KeyStore.getKeyStoreException(KeyStore.java:632) at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.update(KeyStoreCryptoOperationChunkedStreamer.java:132) at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:217) at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:473) at javax.crypto.Cipher.doFinal(Cipher.java:1502) 我的代码基本上是这样的(用Mono for Android编写): Cipher _cipher = Cipher.GetInstance(KeyProperties.KeyAlgorithmAes + “/” + KeyProperties.BlockModeCbc + “/” + KeyProperties.EncryptionPaddingPkcs7); KeyStore _keystore = KeyStore.GetInstance(“AndroidKeyStore”); FingerprintManager _fingerprintManager = (FingerprintManager) Context.GetSystemService(Context.FingerprintService); _keystore.Load(null); var key = _keystore.GetKey(_keyId, null); _cipher.Init(CipherMode.EncryptMode, key); _cryptoObject = new FingerprintManager.CryptoObject(_cipher); _fingerprintManager.Authenticate(_cryptoObject, _cancellationSignal, 0 […]

Android应用加密的当前状态是什么?

如果这个问题听起来很广泛,那只是因为我很难find关于Google在Jelly Bean中引入的app加密的重要细节。 需要说明的是,我指的是Google在本页底部的一个段落中提及的function: http : //developer.android.com/distribute/googleplay/about/distribution.html 听起来很棒:付费用户像以前一样下载到他们所有的设备,但无法与数千名最亲密的朋友分享。 但是,正如所报告的那样,应用程序加密似乎遇到了一些问题,例如,这里( http://blog.gsmarena.com/google-disables-jelly-bean-app-encryption-after-issues-with-several-付费应用/ )。 那是一年多以前的事了。 据推测谷歌已经修复了这个问题,但我没有看到任何后续文章来确认。 如果他们用操作系统更新来修复它,那么可能需要一个特定的操作系统才能工作。 但是上面链接的页面没有说明这一点。 所以这引出了我的一系列问题: 目前Google正在使用应用加密吗? 它需要什么样的操作系统才能使用? 它在打击盗版方面是否有效? 如果使用Android应用程序加密,是否使用了许可证validation库? 感谢你能放下任何光!

连接到开放WiFi

我使用下面的代码连接到加密网络。 但是,如果网络不安全而我将密钥留空(“”)则会失败。 有谁知道如何解决这个问题? 此外,是否可以使用ssid / bssid检测网络是否打开? 或者我必须使用filter进行扫描? public void connectToSSID(final String ssid, final String key) { Log.i(“wifimaster”, “connection to “+ssid); WifiConfiguration wc = new WifiConfiguration(); wc.SSID = “\””+ssid+”\””; //IMPORTANT! This should be in Quotes!! wc.priority = 40; wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); wc.preSharedKey = “\””+key+”\””; wc.wepKeys[0] […]

Android – 你如何应对9774d56d682e549c? Android ID

所以,我认为我很聪明,并使用Android的安全唯一ID的各种哈希和排列来识别我的用户…. 但事实certificate,9774d56d682e549c是一个神奇的ID返回 Secure.getString(getContentResolver(), Secure.ANDROID_ID); 对于大量的设备……似乎我构建的每个模拟器都具有相同的ID,并且许多其他人的手机(许多moto机器人!)和闪存的OS mods倾向于返回相同的重复值。 非MotoDroid / Non-Flashed手机似乎都给了我一个独特的字符串。 但是这个在我的DB中大约有60次! 我将优化我的应用程序以在注册之前检查该字符串,但是建议的方法是如何处理它以获得另一个唯一值? 我当前的想法是检查它,生成一个非常大的随机值,哈希它,然后存储比在SharedPreferences ,然后使用ANDROID_ID或存储在sharedprefs中的那个(如果用户手机给出值)。 任何人都有更好的想法,或者这似乎足以缓解这个疯狂的错误?

在Android应用程序中隐藏加密密钥

我想隐藏用户在用户手机中加密输入的一些数据。 据我所知,我可以使用键/种子值加密/解密数据,但如果我在代码中隐藏键值,我知道它可以以某种方式find(例如反编译Java代码)。 您有什么建议让这个过程更难吗?