AES 加密字符串出现 \r\n
AES encrypt string appear \r\n
当我使用AES128加密字符串时,如果加密字符串太长,那么它会包含\r\n。像这样
现在我不得不用空字符串来替换它。为什么加密字符串包含 \r\n 以及避免或修复它的更好方法。
谢谢
回答:是Base64编码过程造成的,每64个字符会插入一个\r\n .
这是一个Base64编码的字符串。
实际的加密输出是一个8位字节的数组,不是字符。该代码是对加密数据进行 Base64 编码,并可选择每 64 个字符插入换行符,这有时是为了更好地打印输出。解码时使用 NSDataBase64DecodingIgnoreUnknownCharacters
选项删除换行符。
特别是 Objective-C 从 NSData
创建 Base64 字符串是:
- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options
options
包括:
NSDataBase64Encoding64CharacterLineLength
将最大行长度设置为 64 个字符,之后插入一个行结尾。
每 64 个字符插入“\r\n”(回车 return,换行)字符。
如果这不是您想要的,请传递 0 作为选项值。
要解码 Base64,请使用 Objective-C 方法:
- (instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options
有选项:NSDataBase64DecodingIgnoreUnknownCharacters
.
苹果代码:
The default implementation of this method will reject non-alphabet characters, including line break characters. To support different encodings and ignore non-alphabet characters, specify an options value of NSDataBase64DecodingIgnoreUnknownCharacters.
作为 Base64 字符串给出的是长度是 4 的倍数,使用的字符 "a-zA-Z0-9+/" 和尾随的“=”字符。
历史记录:如今 OSX 和 iOS 换行符是单个“\n”(0x0a) 换行符。当我们使用电传打字机作为终端时,“\r”(0x0d)回车 return 将回车或打印头向后移动,但没有将纸张移动到下一行。 “\n”换行符将纸张向上移动了一行,但确实将托架或打印头向后移动了。它们是两种截然不同的机械操作。后来一些系统使用“\r\n”、“\n\r”、“\r”或“\n”。 Unix 选择“\n”,因此 OSX 和 iOS.
当我使用AES128加密字符串时,如果加密字符串太长,那么它会包含\r\n。像这样
现在我不得不用空字符串来替换它。为什么加密字符串包含 \r\n 以及避免或修复它的更好方法。 谢谢
回答:是Base64编码过程造成的,每64个字符会插入一个\r\n .
这是一个Base64编码的字符串。
实际的加密输出是一个8位字节的数组,不是字符。该代码是对加密数据进行 Base64 编码,并可选择每 64 个字符插入换行符,这有时是为了更好地打印输出。解码时使用 NSDataBase64DecodingIgnoreUnknownCharacters
选项删除换行符。
特别是 Objective-C 从 NSData
创建 Base64 字符串是:
- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options
options
包括:
NSDataBase64Encoding64CharacterLineLength
将最大行长度设置为 64 个字符,之后插入一个行结尾。
每 64 个字符插入“\r\n”(回车 return,换行)字符。
如果这不是您想要的,请传递 0 作为选项值。
要解码 Base64,请使用 Objective-C 方法:
- (instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options
有选项:NSDataBase64DecodingIgnoreUnknownCharacters
.
苹果代码:
The default implementation of this method will reject non-alphabet characters, including line break characters. To support different encodings and ignore non-alphabet characters, specify an options value of NSDataBase64DecodingIgnoreUnknownCharacters.
作为 Base64 字符串给出的是长度是 4 的倍数,使用的字符 "a-zA-Z0-9+/" 和尾随的“=”字符。
历史记录:如今 OSX 和 iOS 换行符是单个“\n”(0x0a) 换行符。当我们使用电传打字机作为终端时,“\r”(0x0d)回车 return 将回车或打印头向后移动,但没有将纸张移动到下一行。 “\n”换行符将纸张向上移动了一行,但确实将托架或打印头向后移动了。它们是两种截然不同的机械操作。后来一些系统使用“\r\n”、“\n\r”、“\r”或“\n”。 Unix 选择“\n”,因此 OSX 和 iOS.