在 iOS 中加密 NSString(不是 NSData)-> 发送到 PHP 服务器 -> 让 PHP 服务器解密?

Encrypt NSString (NOT NSData) in iOS -> send to PHP server -> let PHP server decrypt it?

我知道有 openSSL 但我只想使用加密。

这正是我想要做的。

1) 使用 AES-128 或任何有效的加密方法在 xcode(objective-c) 中加密 NSString

2) 使用POST 方法将加密的NSString 发送到PHP 服务器。将发送到 PHP 服务器的参数类似于:

 @"fromClient1=string1&fromClient2=string2"

3) PHP 服务器接收到这样的数据:

 $receivedStr1 = $_POST['fromClient1']; // string1
 $receivedStr2 = $_POST['fromClient2']; // string2

4) 让PHP 服务器将$receivedStr1 和$receivedStr2 解码为纯文本

我看过https://github.com/RNCryptor/RNCryptor,但都是关于NSData加密的。

如何在 PHP 中接收 encrypted NSData?我只知道怎么用

$fromClient = $_POST['someData'];

但是如果整个参数都被加密了就不行了...

谁能帮帮我??这样做的目的是将用户的密码(= NSString)安全地发送到PHP服务器。

继@Rory McKinnel 之后,此代码将数据转换为 base64 字符串,该字符串可以转换回纯文本或数据 (look here for more info)。

转换Objective-C中的数据:

NSString *base64String = [myData base64EncodedStringWithOptions:0];

或在Swift:

let base64String = myData.base64EncodedStringWithOptions(options: 0)

编辑:

NSString 有两个有用的方法:1) - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters.

这些方法有助于将 NSString 转换为合法的URL字符串 根据文档这些方法 return:

A new string made by replacing in the receiver all percent escapes with the matching characters as determined by the given encoding encoding. Returns nil if the transformation is not possible, for example, the percent escapes give a byte sequence not legal in encoding.