Swift 简单异或加密

Swift Simple XOR Encryption

我正在尝试在 Swift 中执行一个简单的异或加密例程。我知道这不是一种特别安全或很好的方法,但我只需要它很简单。我知道 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;
}

如能提供帮助,将不胜感激!

我建议像这样对 String 进行扩展。

extension String {
    func encodeWithXorByte(key: UInt8) -> String {
        return String(bytes: map(self.utf8){[=10=] ^ key}, encoding: NSUTF8StringEncoding)!
}

由内而外,

  1. 对 self.utf8 的调用从字符串
  2. 创建了一个字节数组[UInt8]
  3. 在每个元素上调用 map() 并与键值
  4. 进行异或运算
  5. 从异或字节数组创建了一个新的 String 对象

这是我的 Playground 屏幕截图。

更新:对于 Swift 2.0

extension String {
  func encodeWithXorByte(key: UInt8) -> String {
    return String(bytes: self.utf8.map{[=11=] ^ key}, encoding: NSUTF8StringEncoding) ?? ""
  }
}

我还不能回答评论,但是 Price Ringo,我注意到你的沙箱有几个问题..

最后一行有 2 个错误,您实际上应该将其与原始加密的 UInt8 进行异或运算,而您并不是 "decoding" 加密的字符串..

你有...

println(str.encodeWithXorByte(0))

你应该在哪里..

println(encrypted.encodeWithXorByte(28))