Je dois être capable d'envoyer des informations sécurisées à une variété de téléphones de Windows. Je suis un novice total dans l'iPhone et le développement Android, mais je dois créer une application facile à utiliser pour chaque environnement. L'interface avec les messages texte SMS reçus serait également agréable. J'aimerais acquérir du code pour le cryptage AES 256 pour l'iPhone, Android et Windows XP (et UP). p>
merci p>
Murray P>
4 Réponses :
Différentes langues ont des implémentations différentes de classes cryptographiques. Donc, je ne pense pas qu'il y a une seule bibliothèque qui fonctionnera sur toutes les plateformes. p>
Vous n'avez pas spécifié quelle langue vous utilisez sur Windows pour votre application. T p>
Voici aucun moyen facile de crypter et de déchiffrer. Je vous suggère donc d'obtenir au moins une fiche solide sur la manière dont les algorithmes de cryptage fonctionnent avec différentes tailles de clé, IV, des modes de fonctionnement et de remplissage. Comment générer des touches sécurisées, comment transférer des clés d'un utilisateur à l'autre à l'aide de la cryptographie asymétrique, etc. Ou avez-vous déjà les connaissances théoriques sur la cryptographie? p>
Je n'ai aucune idée sur les classes cryptographiques fournies dans le SDK. Cependant, jetez un coup d'œil à Cette question . P>
Vous avez quelques options ici. P>
Voici une question vous intéresseriez. P>
pour Windows. P>
Jetez également un coup d'œil à ma réponse pour une question similaire. p>
Vous devez certainement étudier la cryptographie avant de les mettre en œuvre sur votre programme. Il serait vraiment facile d'utiliser les fonctions intégrées, mais si vous ne savez pas ce que vous faites, vous vous donnez un faux sentiment de sécurité et possiblement mettre les données de votre client sur le risque. P>
pour iPhone I a utilisé aescrypt-objc , et pour Android Utilisez ce code:
public class AESCrypt {
private final Cipher cipher;
private final SecretKeySpec key;
private AlgorithmParameterSpec spec;
public AESCrypt(String password) throws Exception
{
// hash password with SHA-256 and crop the output to 128-bit for key
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(password.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
key = new SecretKeySpec(keyBytes, "AES");
spec = getIV();
}
public AlgorithmParameterSpec getIV()
{
byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
IvParameterSpec ivParameterSpec;
ivParameterSpec = new IvParameterSpec(iv);
return ivParameterSpec;
}
public String encrypt(String plainText) throws Exception
{
cipher.init(Cipher.ENCRYPT_MODE, key, spec);
byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
String encryptedText = new String(Base64.encode(encrypted, Base64.DEFAULT), "UTF-8");
return encryptedText;
}
public String decrypt(String cryptedText) throws Exception
{
cipher.init(Cipher.DECRYPT_MODE, key, spec);
byte[] bytes = Base64.decode(cryptedText, Base64.DEFAULT);
byte[] decrypted = cipher.doFinal(bytes);
String decryptedText = new String(decrypted, "UTF-8");
return decryptedText;
}
Très bien travaillé. Merci!
Super..!! Prendre +1 de moi
Travaillé sans faille :) +1
Si vous recherchez toujours une implémentation pour les appareils, iPhone et Android, consultez Cet article . Je l'ai créé avec un ami. Sous l'iPhone Post, vous trouverez la partie Android. Les deux peuvent être utilisés en les insérant dans votre projet comme expliqué. p>
Si vous souhaitez utiliser un autre algorithme, vous devriez regarder la façon dont ils sont appelés dans iPhone et Android et le changer partout dans les méthodes. p>
Peu de choses importantes à prendre note lors de la mise en œuvre du cryptage AES:
1. N'utilisez jamais de texte brut comme clé de cryptage. Toujours hachage la clé de texte brut puis utilisez le cryptage.
2. Utilisez toujours Random IV (vecteur d'initialisation) pour le cryptage et le décryptage. La vraie randomisation est importante.
J'ai récemment écrit la bibliothèque de cryptage AES et de déchiffrement de plateformes croisées pour C #, iOS et Android que j'ai posté sur GitHub. Vous pouvez le voir ici - https://github.com/pakhee/cross-platform-aes --cryption p>
Android a des limitations sur la taille du tas, votre outil fonctionne-t-il sur un fichier volumineux (par exemple, 100m)?
problème dans le déchiffrement des données passées à partir d'une application mobile iOS
Pour Android et iOS, voir: Stackoverflow.com/Questtions/7289870/...