问题标签 [tink]

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 投票
3 回答
3086 浏览

java - 使用 google tink 库解密密钥时出现标签不匹配错误

我是密码学的新手。我正在开发一个 poc 来加密和解密一个字符串。当我解密加密的字符串时,它有时会起作用,但有时会引发标签不匹配错误。我错过了什么吗?

这是我的代码:

异常:INFO:密文前缀匹配密钥,但无法解密:javax.crypto.AEADBadTagException:标签不匹配!com.encryption.api.service.EncryptionServiceImplTest > 解密失败

java.security.GeneralSecurityException 解密失败:com.encryption.api.service.EncryptionServiceImpl.decrypt(EncryptionServiceImpl.java:53 处的 com.google.crypto.tink.aead.AeadFactory$1.decrypt(AeadFactory.java:109) 解密失败) 在 com.encryption.api.service.EncryptionServiceImplTest.decrypt(EncryptionServiceImplTest.java:25) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun。 reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit。runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java: 325) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 在 org.junit.runners.ParentRunner$3.run(ParentRunner. java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000 (ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.gradle.api.internal .tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114) 在 org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57) 在 org.gradle.api.internal。 tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66) 在 org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method ) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org .gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 在 org.gradle。internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter. java:93) 在 com.sun.proxy.$Proxy1.processTestClass(Unknown Source) 在 org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:108) 在 sun.reflect.NativeMethodAccessorImpl .invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java :498) 在 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 在 org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146) 在 org.gradle 的 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) .internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128) 在 org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404) 在 org.gradle .internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 在 java.lang.Thread.run(Thread.java:748)

1 次测试完成,1 次失败

0 投票
2 回答
193 浏览

java - 解密结果不一致

我有两个服务实例,它们在云中运行加密和解密。解密有时会因“解密失败”错误而失败。我猜这是因为每个实例都有自己的 Aead 实例。我该如何解决这个问题?

如果只有一个实例正在运行,我会得到一致的结果......

0 投票
1 回答
367 浏览

go - 视频奖励的 AdMob 服务器端验证

我需要在服务器上验证用户的视频奖励,我正在使用 Google 的 Admob,并且作为在他们网站上找到的文档,我找不到任何可以帮助我做这类事情的东西,因为 Golang API 不是记录在案,我还需要使用他们使用的 Crypto Lib,也是由谷歌 Tink 制作的。

0 投票
2 回答
1020 浏览

cryptography - Tink 中用于 KeysetHandle 的密钥构造

以下几行显示了如何在 Tink 中生成密钥:

  • keysetHandle=KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM)
  • privateKeysetHandle = KeysetHandle.generateNew(SignatureKeyTemplates.ECDSA_P256)

你能告诉我如何在给定密钥字节和相关参数等参数的情况下构造一个密钥吗?


也可以通过从 JSON 加载参数来创建密钥:

JSON 中的密钥格式是如何定义的?

0 投票
0 回答
78 浏览

php - 如何使用“Tink”在客户端(Android)加密并在服务器端(PHP)解密

我已将此演示用于 Android 端。

就我而言,我想在 REST API 中设置这个加密和解密过程。如果有人通过 Apk 的反向过程(反编译)获得 API 并无论如何调用此 API,那么我想通过此 Tink 保护此过程。

0 投票
1 回答
1254 浏览

android - 如何管理 Android Keystore KMS 以进行对称加密和解密?

我想用 android Keystore KMS 对称地加密和解密。我知道谷歌云 KMS 和 AWS KMS,但我不想处理那个平台。

如何为双方(客户端、服务器)管理生成的 Android Keystore 私钥?

我创建了一个用于加密和解密的私钥,但很难为商店管理和共享此密钥。我已将该私钥存储在 Private SharedPreferences 中以供重用,但有一个问题是,这个私有 SharedPreferences 不安全,因为所有人都可以在 root 设备中观察这个私有 SharedPreferences 文件。

请参阅此链接以获取有关为 Android Keystore 生成私钥的信息。

我是 tink 的新手,所以请帮我解决这个问题。如果我的想法有错误,请随时发表您的意见。

0 投票
1 回答
691 浏览

android - 如何在 Tink android 中创建主密钥

我想使用 Tink 库并能够加密和解密数据,但不了解创建主密钥的目的是什么以及如何为其创建主密钥。

在这里,我应该如何创建 tink_master_key?

0 投票
1 回答
48 浏览

tink - Google Tink 密文可以跨编程语言移植吗?

我想知道我是否加密了明文,假设使用 Go SDK 是否能够使用 Java SDK 解密它?这是保证跨编程语言的可移植性的库的设计目标吗?

0 投票
2 回答
1312 浏览

java - 在 Java 中使用 tink 时解密错误

我正在尝试创建要作为 REST API 响应发送的加密令牌。然后,最终用户可以在下一个请求期间向这个 api 发送相同的令牌,我可以解析它并获取一些上下文信息(前一个)。

由于我是密码学的新手,所以我觉得最好自己学习Google tink而不是自己编写加密/解密代码。但是我无法正确解密。

我正在做如下加密/解密:

这是我生成令牌的方式:

finalToken将作为响应发回,并从下一个请求中检索。

这是我试图解密:

这总是会导致以下异常:

我在这里想念什么?

PS:我用的是tink版本1.3.0-rc1

0 投票
1 回答
757 浏览

android - Admob 奖励广告服务器端验证

我想在我的 Android 应用上对 Admob 奖励视频广告进行服务器端验证。为此,我按照admob 文档中的说明进行操作,但失败了。

首先,我从 gradle 导入了 google tink 库,如下所示。

然后我想调用谷歌 tink库中的 RewardedAdsVerifier 助手类,如 Admob 文档中所示,在 MainActivity 中,显示奖励视频广告,但这个类不能包含在我的系统中。

当我尝试如上所述在 MainActivity 中调用 RewardedAdsVerifier 类时,Android Studio 给我错误“无法解析符号'RewardedAdsVerifier'”。

由于我对激励视频广告的服务器端验证进行了研究,我找不到任何示例或示例。我很乐意帮助我如何做到这一点。提前致谢。