我正在尝试在Swift中执行一个简单的xor加密例程。我知道这不是一个特别安全或很好的方法,但我只需要简单。我知道代码是如何在Javascript中实现的,我只是在将它转换为Swift时遇到了麻烦。
使用Javascript:
function xor_str()
{
var to_enc = "string to encrypt";
var xor_key=28
var the_res="";//the result will be here
for(i=0;i<to_enc.length;++i)
{
the_res+=String.fromCharCode(xor_key^to_enc.charCodeAt(i));
}
document.forms['the_form'].elements.res.value=the_res;
}
你能提供的任何帮助都会很棒,谢谢!
答案 0 :(得分:16)
我建议像这样扩展String。
extension String {
func encodeWithXorByte(key: UInt8) -> String {
return String(bytes: map(self.utf8){$0 ^ key}, encoding: NSUTF8StringEncoding)!
}
从内到外,
[UInt8]
这是我的Playground屏幕截图。
更新:适用于Swift 2.0
extension String {
func encodeWithXorByte(key: UInt8) -> String {
return String(bytes: self.utf8.map{$0 ^ key}, encoding: NSUTF8StringEncoding) ?? ""
}
}
答案 1 :(得分:3)
我无法回复评论,但是Price Ringo,我注意到你的沙箱有几个问题..
最后一行有2个错误,你应该用原始的加密UInt8对它进行异或,你不是&#34;解码&#34;加密的字符串..
你有......println(str.encodeWithXorByte(0))
你应该有......
println(encrypted.encodeWithXorByte(28))