aes

How to do AES 128 encryption of a string in Swift using Xcode and send it as POST to the server?

允我心安 提交于 2019-12-02 05:16:11
How to do AES 128 encryption of a string in Swift using Xcode and send it as POST to the server?... I am new to Xcode and am learning to encrypt the string data and want to send to HTTP server. It is a basic iOS app for sending Latitude and Longitude of the device. Based on examples from: https://github.com/krzyzanowskim/CryptoSwift To encrypt a string using CryptoSwift: func encrypt(text: String) -> String? { if let aes = try? AES(key: "passwordpassword", iv: "drowssapdrowssap"), let encrypted = try? aes.encrypt(Array(text.utf8)) { return encrypted.toHexString() } return nil } To decrypt:

Why is AES encrypted cipher of the same string with the same key always different?

元气小坏坏 提交于 2019-12-02 05:12:55
I have a file called plain.txt. Inside the file I have: Hello Hello Hello Hello I am using this command to encrypt it: openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin Then I print the encrypted value like this: buff = open("encrypted.bin") cipher = buff.read() buff.close() print b64encode(cipher) But it is always different value. Shouldn't the cipher be always the same? I am using the same file and the same password to encrypt it. These are my terminal outputs: Richard-Knops-MacBook-Pro:python_test richardknop$ openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt

How to get AES secret key from DH secret key

*爱你&永不变心* 提交于 2019-12-02 04:27:17
I have the following code that converts a DH secret key to AES secret key. This used to work until Oracle JRE 8u161 when they started restricting creation of DH keys < 1024 in java.security file. Now, I will get NoSuchAlgorithmException: Unsupported secret key algorithm AES at the last line. PrivateKey privKey = null; PublicKey pubKey = null; PublicKey agreement = null; KeyAgreement keyAgreement = KeyAgreement.getInstance("DH"); keyAgreement.init(privKey); keyAgreement.doPhase(pubKey, false); keyAgreement.doPhase(agreement, true); SecretKey key = keyAgreement.generateSecret("AES"); I tried

Android JNI string encryption/decryption

自作多情 提交于 2019-12-02 04:25:43
I am trying to do aes encryption/decryption in native code C. Encryption does work but when I try to decrypt the string. It doesn't end up as original string. Here is the JNI method which does encrypt/decrpt based on mode param: jbyteArray Java_com_example_hellojni_HelloJni_encrypt( JNIEnv* env, jobject this, jbyteArray srcData, jint mode) { // get length of bytes int srcLen=(*env)->GetArrayLength(env,srcData); //convert jbyteArray to byte [] jbyte data[srcLen]; (*env)->GetByteArrayRegion(env, srcData, 0, srcLen, data); (*env)->ReleaseByteArrayElements(env, srcData,data , 0); unsigned char*

AES256 String encryption on PHP and decryption on iPhone

江枫思渺然 提交于 2019-12-02 03:47:59
问题 i have this on my php code: $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key = "bla"; $text = json_encode($rows); $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv) print base64_encode($crypttext); and this one the iphone: NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.bla.com/myinfo.php"] encoding:NSUTF8StringEncoding error:&error]; response = [

Why do different implementations of AES produce different output?

六月ゝ 毕业季﹏ 提交于 2019-12-02 03:11:09
问题 I feel I have a pretty good understanding of hash functions and the contracts they entail. SHA1 on Input X will ALWAYS produce the same output. You could use a Python library, a Java library, or pen and paper. It's a function, it is deterministic. My SHA1 does the same as yours and Alice's and Bob's. As I understand it, AES is also a function. You put in some values, it spits out the ciphertext. Why, then, could there ever be fears that Truecrypt (for instance) is "broken"? They're not saying

前端使用crypto.js进行加密

倾然丶 夕夏残阳落幕 提交于 2019-12-02 03:04:48
最近在使用Cookies加密保存数据的时候,接触到crypto,使用还算简单,在这里记录一下。 可以在这个GitHub的https://github.com/brix/crypto-js上下载该js,它可以单独引入所需要加密方式的js;也可以引入一个crypto-js.js 这个文件,它相当于引入了所有的加密方式,我使用的就是后者一次引入所有的加密文件,这个文件也不是很大,还可以接受。 因为我的需求是加密可逆,具有一定的安全性(对安全性要求不高),所以使用DES或AES即可,我用的是AES: function getAesString(data,key,iv){//加密 var key = CryptoJS.enc.Utf8.parse(key); var iv = CryptoJS.enc.Utf8.parse(iv); var encrypted =CryptoJS.AES.encrypt(data,key, { iv:iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7 }); return encrypted.toString(); //返回的是base64格式的密文 } function getDAesString(encrypted,key,iv){//解密 var key = CryptoJS.enc.Utf8

侧信道攻击,从喊666到入门之——错误注入攻击白盒

淺唱寂寞╮ 提交于 2019-12-02 02:09:58
作者:backahasten 上文中 ,我们介绍了有关 Unicorn 的使用,为了避免只造轮子不开车的现象出现,我们就用 Unicorn 来亲手攻击一个 AES 白盒。 我选取了 CHES 2016 竞赛中的 AES 白盒,这个白盒非常白,甚至给了源码,代码和程序可以在 这里 找到。这个链接还包含里 Writeup ,但是其中使用的工具很老了,还是 python2 的代码,并且使用的执行引擎是 PIN ,如果是 ARM 的安卓 APP 里的白盒就没办法了。 我选取了 CHES 2016 竞赛中的 AES 白盒,这个白盒非常白,甚至给了源码,代码和程序可以在 这里 找到。这个链接还包含里 Writeup ,但是其中使用的工具很老了,还是 python2 的代码,并且使用的执行引擎是 PIN ,如果是 ARM 的安卓 APP 里的白盒就没办法了。 啊呜,数学 !!!!!!!!!所有计算均在——有限 域 GF( 2^8 )!!!!!!!! 在进行白盒破解之前,我们看一下错误注入的原理是什么。 对于AES128来说,错误注入的目标在第九轮的 MixColumns 计算之前,第九轮的 MixColumns 计算之前的数据假设是这个样子的: 假设我们的错误正好命中了第一个字节,则数据流变成了: 之后,数据流会依次进入 MixColumns AddRoundKey K 9 SubBytes

AES 加密算法的原理详解

本秂侑毒 提交于 2019-12-02 01:56:27
AES 加密算法的原理详解 本教程摘选自 https://blog.csdn.net/qq_28205153/article/details/55798628 的原理部分。 AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义: · 明文P 没有经过加密的数据。 · 密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。 · AES加密函数 设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。 · 密文C 经加密函数处理后的数据 · AES解密函数 设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

C# AES的128位、192位、256位加密

泪湿孤枕 提交于 2019-12-02 01:52:48
C# AES的128位、192位、256位加密   AES加密原理,这里就不解释了,自行百度。这里主要细说AES的CBC加密模式下的128位、192位、256位加密区别,参考 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB) 。 这三种的区别,主要来自于密钥的长度,16位密钥=128位,24位密钥=192位,32位密钥=256位。   废话不多说,直接上图。    16位密钥对应128位加密          24位密钥对应192位加密             32位密钥对应256位加密               其中,向量都必须是16位。        最后贴出封装的加解密代码:                //AES加密      public static string AesEncrypt(string value, string key, string iv = "") { if (string.IsNullOrEmpty(value)) return string.Empty; if (key == null) throw new Exception("未将对象引用设置到对象的实例。"); if (key.Length < 16) throw new Exception("指定的密钥长度不能少于16位。"); if (key.Length > 32)