Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中特殊字符的处理_Swift_Cocoa_Hash_Character - Fatal编程技术网

Swift中特殊字符的处理

Swift中特殊字符的处理,swift,cocoa,hash,character,Swift,Cocoa,Hash,Character,我正在用Swift开发一个Cocoa应用程序,但我一直在尝试做一些必须容易做的事情,但不知何故,我没有得到我期望的结果 在我的应用程序中,我试图将一个单词散列到MD5。当我跳过特殊角色时,一切正常。当我尝试对具有特殊字符的单词进行散列时,结果散列与正确的散列不对应 这是我的密码 import Cocoa let task = NSTask() let pipe = NSPipe() task.standardOutput = pipe task.launchPath = "/bin/bash

我正在用Swift开发一个Cocoa应用程序,但我一直在尝试做一些必须容易做的事情,但不知何故,我没有得到我期望的结果

在我的应用程序中,我试图将一个单词散列到MD5。当我跳过特殊角色时,一切正常。当我尝试对具有特殊字符的单词进行散列时,结果散列与正确的散列不对应

这是我的密码

import Cocoa

let task = NSTask()
let pipe = NSPipe()
task.standardOutput = pipe

task.launchPath = "/bin/bash"
task.arguments = ["-c", "echo -n 'Canción' | md5"]

let file:NSFileHandle = pipe.fileHandleForReading
task.launch()
task.waitUntilExit()

let data =  file.readDataToEndOfFile()
let datastring = NSString(data: data, encoding: NSUTF8StringEncoding) as String!
print("Hash = \(datastring)")
如果在操场上运行此代码,将得到以下哈希值:

Hash = 770f92a03e9c82af426549941a9df70b
但是,如果您直接在OSX终端中运行下一个命令,您将得到正确的哈希值,这与第一个完全不同

$ echo -n 'Canción' | md5
这是终端响应:

3abf536a5262c902a30d74f68f38067b
很明显,我遗漏了一些重要的内容,但我找不到代码中的内容

有人吗


请。。。救命啊!这里有一个线索:
就是问题所在。如果删除该字符,则两个位置的结果相同。可能需要对字符编码进行一些设置。如果将
md5
更改为
Od-x
,您可以看到交付给
Od
md5
的十六进制代码,它们是不同的。这很有趣。显然,
NSTask
传递“分解映射”中的所有参数字符串,即“ó”作为“o”+“')这似乎是NSTask中的一个“bug”,这里也观察到:。这里也观察到:,。这是正确的@vacawama问题在于
字符。我需要阅读更多关于
Od
命令行的信息。对我来说,使用八进制是不常见的。这里有一个线索:
就是问题所在。如果删除该字符,则两个位置的结果相同。可能需要对字符编码进行一些设置。如果将
md5
更改为
Od-x
,您可以看到交付给
Od
md5
的十六进制代码,它们是不同的。这很有趣。显然,
NSTask
传递“分解映射”中的所有参数字符串,即“ó”作为“o”+“')这似乎是NSTask中的一个“bug”,这里也观察到:。这里也观察到:,。这是正确的@vacawama问题在于
字符。我需要阅读更多关于
Od
命令行的信息。对我来说,使用八进制是不常见的。