Tag: swift

带有密钥的Java HmacSHA256

我已经尝试了一些来自stackoverflow的链接来获取HmacSHA256的密钥以使用java,但我总是得到 func check(body: String) -> String { let hash = body.hmac(HMACAlgorithm.sha256, key: Router.sigKey) print(“SIG: ” + Router.sigKey) print(“result of hash. \(hash)”) return hash } 此函数返回带有给定String的键的哈希值。 关键是:0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6 字符串是:示例 结果是:27effb76c97022497e25d3a5d7e823462f212a82d9ebba35f179071568b0c335 当我使用这个网站检查我的SHA256是否使用相同的密钥时,它返回相同的答案,所以我知道我在swift中的代码是好的。 但是当我尝试在java中执行此操作时,这里是源代码。 public static String HMAC_SHA(){ try { String secret = “0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6”; String message = “example”; Mac sha256_HMAC = Mac.getInstance(“HmacSHA256”); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), “HmacSHA256”); sha256_HMAC.init(secret_key); […]

如何在swift中将字符串(在Java中使用加密MessageDigest)编码为Base64字符串?

在Java中,我使用了这个: public void encryptData() { String data = “Hello World”; MessageDigest md = null; try { md = MessageDigest.getInstance(“MD5”); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } if (md == null) { return; } md.update(data.getBytes()); String dataEncoded = Base64.encodeToString(md.digest(), 11); return dataEncoded; //print: sQqNsWTgdUEFt6mb5y4_5Q } 我如何在Swift中获得相同的结果? 更新: func test() -> Void { var data: String = […]

等效于Java ThreadLocal变量的Objective C / Swift

在Java中,我们有ThreadLocal类: 该类提供线程局部变量。 这些变量与它们的正常对应物的不同之处在于,访问一个变量的每个线程(通过其get或set方法)都有自己独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程相关联的类中的private static字段(例如,用户ID或事务ID)。 例: private static final ThreadLocal threadLocalStringBuilderHelper = new ThreadLocal() { @Override protected StringBuilderHelper initialValue() { return new StringBuilderHelper(); } }; Objective C或Swift中是否有任何等效模拟这种行为? 我可以在Swift上使用: static let String = someInitialValue() 并实现同样的目标?

如何在Swift中向堆栈跟踪传递错误

在java中,如果一个方法抛出错误,则调用它的方法可以将其传递给下一个方法。 public void foo() throws Exception { throw new Exception(); } public void bar() throws Exception { foo(); } public static void main(String args[]) { try { bar(); } catch(Exception e) { System.out.println(“Error”); } } 我正在写一个快速的应用程序,并希望做同样的事情。 这可能吗? 如果不可能有什么其他可能的解决方案? 我调用此调用的原始函数具有此结构。 func convert(name: String) throws -> String { }