问题标签 [cryptoswift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1006 浏览

ios - CryptoSwift 不能使用 swift 2

我想在我的 swift 项目中使用https://github.com/krzyzanowskim/CryptoSwift(我的 swift 是 2.1 和 Xcode 7.1.1)。完成安装说明(运行 build.sh 然后将框架文件添加到我的项目)后,我仍然无法导入 CryptoSwift 框架。请帮忙。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
944 浏览

node.js - CryptoSwift 加密的数据与 Node.js 不同

我使用 CryptoSwift 加密一些数据,然后使用 Node.js 加密相同的数据。但结果并不相同。我问过作者,他说不是bug。

我不知道我在哪里做错了。以下是我如何使用 CryptoSwift 和 Node.js 的图片:

密码算法:aes-256-cfb

密钥:32 字节 1

iv: 16 字节 0

CryptoSwift:开发分支 0.1.1

Node.js:LTS 4.2.3

CryptoSwift 加密的数据

Node.js 4.2.3 加密的数据

这是快速代码:

你可以看到,前两个字节是一样的,但其余的不是。为什么?我的代码写错了吗?我对加密了解不多,请告诉我原因。太感谢了。

0 投票
1 回答
884 浏览

swift - 如何在 AES CryptoSwift 密码之后将字节转换为 NSString

我正在使用 CryptoSwift 加密我将在 URL 中传递的数据。为此,我需要将数据片段的数据类型设为 String 以连接到 NSURL 请求中。加密数据后,以字节为单位输出。如何将字节转换为无意义的字符串以传递 PHP 脚本可以解密的 URL?

我能够加密成 UInt8,但是我认为不可能通过 URL 将其传递给 PHP 脚本,因此我需要将其设为字符串。

编码:

非常感谢你的帮助,

0 投票
2 回答
641 浏览

encryption - 为什么 CryptoSwift 函数 ChaCha20(key: "Key", iv: "Iv") 返回 nil 而不是抛出错误?

我目前正在尝试制作类似于master password的自己的密码管理器应用程序,它使用一种算法来生成密码,因此它们不必存储在客户端计算机上或在线上。

为了实现这一点,我决定使用使用CryptoSwift库的 ChaCha20 密码算法。这是我目前拥有的代码(OS X 应用程序):

我得到错误的那一行是let encrypted = try ChaCha20(key: "Key", iv: "Iv")!.encrypt(UInt8Array). 我得到的错误是“致命错误:在展开可选值时意外发现 nil”。这可能是由于'!' 在加密方法之前,因为在此之前一切正常。我试过替换'!' 带有“?”,但是encrypted如果我删除“!”,则变量等于nil 或者 '?' 我完全得到一个语法错误。

我将如何解决let encrypted = try ChaCha20(key: "Key", iv: "Iv")!.encrypt(UInt8Array)在线问题?

0 投票
1 回答
6741 浏览

ios - CryptoSwift AES128-CBC 与 Swift

解密 AES128CBC 加密的 JSON 时出现此错误:

断言失败:块大小和初始化向量必须相同长度!:文件##### for iOS/CryptoSwift/Sources/CryptoSwift/AES.swift,第 97 行

我将 CryptoSwift 框架与最新的 Xcode 一起使用。

我的方法:

称呼:

0 投票
1 回答
1371 浏览

ios - 为什么在使用 swift 语言的 ios 中使用 CryptoSwift 框架时会出现此错误?

为了快速获取 md5 哈希标签,我正在使用 CryptoSwift 框架。按照安装程序进行操作,一切正常。但是在编译时,我在 cryptoswift 中遇到错误,如下图所示。Swift 在添加框架时真的很头疼。它是一种半熟的语言。

/Users/###/Desktop/SwiftMD5String/CryptoSwift/Sources/CryptoSwift/BlockMode/CipherBlockMode.swift:15:47:传递给不带参数的调用的参数

此错误发生 17 次

它还显示 import CryptoSwift -> No module found for CryptoSwift

0 投票
0 回答
2621 浏览

swift - 错误:“块大小和初始化向量的长度必须相同!”

我正在尝试加密一些数据并且我不断收到此错误,同时我的 iv 和密钥大小相同但包含 29 个值...这是我的代码。当我尝试使用具有 16 个值的键时,它可以工作,但我也必须使用另一个键,但我不知道如何解决它。有人可以帮助我吗?

0 投票
0 回答
1545 浏览

ios - CryptoSwift + CryptoJS Swift

我真的需要一些帮助来解密用 CryptoJS 加密的服务器响应。

我使用CryptoSwift来解密响应。

这是我得到的服务器响应数据示例。

{\"ct\":\"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\",\"iv\":\"d6d6bd8ee407bc25a7b23d8d36b7bce9\",\"s\":\"b8e72892c801c87c \"}"}}}d6d6bd8ee407bc25a7b23d8d36b7bce9\",\"s\":\"b8e72892c801c87c\"}"}d6d6bd8ee407bc25a7b23d8d36b7bce9\",\"s\":\"b8e72892c801c87c\"}"}

简单的字符串解析会清除加密的字符串并给我以下数据:

和其他数据的关键形式

这是我用来解密响应的代码:

无论我做什么,我都会得到错误 = Decrypt 或 base64 字符串,它们不会像预期的那样解码为 JSON。

PS:我确实尝试过 CryptoJS.swift 但结果是“未定义”

UPD

示例项目 这是在后端加密数据的方式:

这是在后端解密数据的方式:

我尝试在我的示例项目中进行类似的操作,但由于某种原因它对我不起作用。

UPD2

从后端更新

UPD3

不,名称相似,但 API 不同。我们在服务器端使用了 npmjs.com/package/node-cryptojs-aes(加密+解密),在我们的网站上使用了 code.google.com/archive/p/crypto-js 客户端(也是加密+解密)

加密数据样本

{"_id":"5687ad129b65920a00b56a9b","type":"user","created":"2016-01-02T10:57:22.851Z","uuid":"d9df3412cee97ec1d0a8c547f73e4bb6","secret":"307a14",62ffc667c97497 "profile":{"lastname":"Mmm","gender":"Male","firstname":"Mmm","email":"mmm@mmm.mmm","dob":"1993-10- 31T00:00:00.000+0200"},"头像":{"大":" https://graph.facebook.com/v2.4/1122734811071660/picture?width=120&height=120"},"location":{"country":{"filename":"greece","code":"GR","continent":"Europe","name":"Greece"},"state": {"id":"Aitolia kai Akarnania","country":"GR","name":"Aitolia kai Akarnania"}},"auth":{"facebook":{"userID":"1122734811071660"}} ,"通知":{"new_window":{"sms":false,"email":true,"push":false},"new_live":{"sms":false,"email":true,"push" :false},"new_premium":{"sms":true,"email":true,"push":false},"reminder":{"sms":true,"email":true,"push":false },"new_arcade":{"sms":true,"email":true,"push":false},"ranking":{"sms":false,"email":true,"push":false}},"metas ":{},"stats":{"game":{"time":{"total":1084452,"maze":{"mean":180436,"stdev":423,"min":180013," max":180859,"sum":360872},"wordsearch":{"mean":111639.5,"stdev":68379.5,"min":43260,"max":180019,"sum":223279},"琐事":{"mean":22410,"stdev":0,"min":22410,"max":22410,"sum":22410},"brokenword":{"mean":40399,"stdev":0 ,"min":40399,"max":40399,"sum":40399},"imagelabel":{"平均":38349.5,"stdev":22808.5,"min":15541,"max":61158,"sum":76699},"scramble":{"mean":180174,"stdev":0,"min" :180174,"max":180174,"sum":180174},"sort":{"mean":180619,"stdev":0,"min":180619,"max":180619,"sum":180619 }},"score":{"total":4500,"maze":{"mean":null,"stdev":null,"min":null,"max":null,"sum":0}, "wordsearch":{"mean":1000,"stdev":0,"min":1000,"max":1000,"sum":1000},"琐事":{"mean":800,"stdev" :0,"min":800,"max":800,"sum":800},"brokenword":{"mean":800,"stdev":0,"min":800,"max":800,"sum":800},"imagelabel":{"mean":950,"stdev":50,"min":900,"max" :1000,"sum":1900},"scramble":{"mean":null,"stdev":null,"min":null,"max":null,"sum":0},"sort": {"mean":null,"stdev":null,"min":null,"max":null,"sum":0}}},"positions":{"position":{"avg":0} },"played":{"window":1,"total":232,"live":120,"arcade":101,"live-duplicate":10}},"credits":487,"utm" :"false","perms":{"root":true},"undefined":null,"value":{"credits":520,"usd":52,"购买":3},"溢价":true}

0 投票
1 回答
593 浏览

ios - 调用中的 AES 额外参数“填充”?斯威夫特2

我进行扩展以生成使用 AES 加密和解密的函数,如下所示:

但 aesEncrypt 和 aesDecrypt 在这些行的调用中都有错误额外参数“填充”:

如何修复这些错误?

更新:我正在使用新方法来获取 aes 加密:

0 投票
0 回答
195 浏览

ios - 升级到 Xcode 8 后出现 CryptoSwift 和 SwiftHTTP 问题

我将Xcode 版本升级到 8。我发现了这些问题。 在此处输入图像描述

在此处输入图像描述

有谁知道如何解决这些问题?请帮我。