我正在尝试在Swift中创建字符串的HMAC SHA-1哈希,但无法弄清楚如何与API进行交互,因为它似乎没有导入CommonCrypto框架.我尝试了各种不同形式的"import CommonCrypto"并创建了一个桥接头文件,但没有一个有所作为.
奇怪的是,如果我创建一个Objective-C类,我可以毫无问题地与API交互,所以这似乎是Swift独有的.
如果有人能告诉我uint8_t digest[CC_SHA1_DIGEST_LENGTH]Swift中的等价物,我会非常感激
我正在尝试使用Swift中的密码加密String,但不知道如何操作.我需要像下面这样工作的东西
let password = "password"
let message = "messageToEncrypt"
let encryptedMessage = encrypt(message, password)
...
let decryptedMessage = decrypt(encryptedMessage, password)
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
谢谢
更新 < - 立即删除此部分
更新2
好的,我现在有以下内容:
func testEnc() throws {
let ivKey = "tEi1H3E1aj26XNro"
let message = "Test Message"
let password = "pass123"
let aesKey = password.padding(toLength: 32, withPad: "0", startingAt: 0)
do {
let messageArray = Array(message.utf8)
let encrypted = try AES(key: aesKey, iv: ivKey, blockMode: .CBC, padding: .pkcs7).encrypt(messageArray)
let encryptedString = String.init(bytes: encrypted, encoding: .utf8)
let …Run Code Online (Sandbox Code Playgroud) 我的android应用程序中有一个密码字符串.我需要使用.netWeb服务通过Web服务(即以...结尾.aspx)发送密码SOAP.在发送密码之前,我需要AES 128使用自定义密钥和IV 加密密码.
他们在.net中有一个加密/解密工具,带有自定义密钥和IV.该工具询问具有16位和IV 8位的自定义键.如果给它字符串,它会生成加密字符串.例
例:
Key : 1234567812345678
IV : 12345678
String : android
Encrypted string : oZu5E7GgZ83Z3yoK4y8Utg==
Run Code Online (Sandbox Code Playgroud)
我不知道如何在android中做到这一点.需要帮忙.
我正在使用Xcode 9.0和CryptoSwift(0.7.2).我正在尝试扩展String以解密AES128加密字符串.我已经使用Pod成功添加了CryptoSwift,但是我收到了以下编译错误 - 我做错了什么?
无法构造'PKCS7',因为它没有可访问的初始值设定项
这是扩展名:
import Foundation
import CryptoSwift
extension String {
// https://stackoverflow.com/questions/27072021/aes-encrypt-and-decrypt
func aesDecrypt(key: String, iv: String) throws -> String {
let data = Data(base64Encoded: self)!
let decrypted = try! AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).decrypt([UInt8](data))
let decryptedData = Data(decrypted)
return String(bytes: decryptedData.bytes, encoding: .utf8) ?? "Could not decrypt"
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,我正在构建一个与安静的服务器通信的iOS应用程序.这需要我的java AES代码和Swift AES代码使用CryptoSwift生成相同的结果,使用此处的教程(AES加密和解密).然而,与我的java代码相比,这给了我不同的结果.
这是我的java代码:
private static final byte[] keyValue = new byte[] { 'T', 'h', 'e', 'B', 'e', 's', 't', 'S', 'e', 'c', 'r','e', 't', 'K', 'e', 'y' };
public static String encrypt(String Data) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
String encryptedValue = new BASE64Encoder().encode(encVal);
return encryptedValue;
}
public static String decrypt(String encryptedData) throws Exception {
Key key = generateKey();
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.DECRYPT_MODE, key);
byte[] …Run Code Online (Sandbox Code Playgroud) 我试图在 Laravel 中使用 crypt::encrypt 加密一些数据。我需要在 iOS 和 Android 应用程序中解密此加密。任何的想法?
swift ×4
ios ×3
android ×2
encryption ×2
java ×2
aes ×1
asp.net ×1
cocoapods ×1
commoncrypto ×1
cryptography ×1
cryptoswift ×1
hash ×1
hmacsha1 ×1
laravel ×1
macos ×1
php ×1
swift3 ×1