我想使用Yahoo API在Android中获取登录用户的电子邮件.我已经获得了访问令牌和用户GUID,但获取用户电子邮件的下一步无效.
我收到以下回复消息:
{oauth=WWW-Authenticate: OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"}
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.
Spring4D库有加密类,但我无法按预期工作.我可能错误地使用它们,但是缺少任何示例都会让它变得困难.
例如,在网站https://quickhash.com/hash-sha256-online上,我可以散列单词"test"来生成以下哈希:
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
Run Code Online (Sandbox Code Playgroud)
使用Spring4D库,以下代码生成不同的哈希:
CreateSHA256.ComputeHash('test').ToString;
Run Code Online (Sandbox Code Playgroud)
结果是:
9EFEA1AEAC9EDA04A892885A65FDAE0E6D9BE8C9FC96DA76D31B929262E12B1D
Run Code Online (Sandbox Code Playgroud)
抛开大/小写,它完全是一个不同的哈希.我知道一定是做错了,但是再没有使用的例子,所以我一直坚持如何做到这一点.
我有JCOP v2.4.2 r3智能卡。它的Security Target中写到我的卡支持Java Card 3.0.1 Classic版本。我在Oracle网站上搜索了一个开发套件来为我的卡开发一些小程序,但我找不到它们。Java Card 3.0.3只有一个开发套件,而所有版本都有规范。
Q1:如何将我的“.java”文件转换为除v3.0.3之外的其他版本的“.cap”文件?
我的问题看起来像这样:我在javaCard上生成一个签名(jcdk 2.2.2),当我想在终端上使用BouncyCastle验证它时,签名并不总是被验证 - 3,66中的1(平均100次尝试)签名是经核实,其余部分归还假.当我验证卡上的签名时,它总是返回true,但是在终端上它通常返回false,但有时是真的.因为终端有时给出一个肯定的答案我认为代码是好的,原因是其他地方,但我可能是错的.
在javacard im usign Signature.ALG_ECDSA_SHA,并在终端Signature.getInstance("SHA1withECDSA","BC")上我尝试了SHA1withDetECDSA,但我的行为相似.
请帮忙.
我正在尝试构建一个发生以下情况的应用程序:
我遇到的问题是:服务器似乎不可能在事先没有客户端证书的情况下生成要签名的哈希值.我真的更喜欢创建一个解决方案,其中服务器不需要知道客户端的证书就可以创建文档摘要.
到目前为止,我发现的所有示例都使用PdfPKCS7.getAuthenticatedAttributeBytes函数来获取待签名的哈希值,但这需要知道客户端证书.我看过Bruno Lowagie撰写的"PDF文档的数字签名"白皮书,但我没有看到确切消化的信息.
这是我当前尝试的代码片段:
public byte[] simplePresign(String src, String digestAlgorithm) throws IOException, DocumentException, GeneralSecurityException {
this.digestAlgorithm = digestAlgorithm;
tsaClient = new CustomTSAClient();
PdfReader reader = new PdfReader(src);
os = new ByteArrayOutputStream();
PdfAStamper stamper = PdfAStamper.createSignature(reader, os, '\0', PdfAConformanceLevel.PDF_A_1B);
appearance = stamper.getSignatureAppearance();
PdfSignature dic = new PdfSignature(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
appearance.setCryptoDictionary(dic);
HashMap<PdfName, Integer> exc = new HashMap<PdfName, Integer>();
exc.put(PdfName.CONTENTS, getEstimatedSize(null, tsaClient) * 2 + 2);
appearance.preClose(exc);
InputStream data = appearance.getRangeStream();
MessageDigest mDigest = DigestAlgorithms.getMessageDigest(digestAlgorithm, null);
return DigestAlgorithms.digest(data, mDigest); …Run Code Online (Sandbox Code Playgroud) 似乎该AesManaged.KeySize属性的文档缺少默认值。有关于最大密钥大小的声明:
密钥的最大长度为 256 位。
在评论中。但是由于 AES 算法能够处理 128、192 或 256 位的密钥,实际的默认值可能不是 256。那么......它是什么?
我有一个字符串String x = "Sample text";,我想打印它的base64加密.正如众多例子所述,我使用:
byte[] encodedBytes = Base64.encodeBase64(x.getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
Run Code Online (Sandbox Code Playgroud)
但这给了我The method encodeBase64(byte[]) is undefined for the type Base64......为什么?
我正在浏览libsodium,特别是对称加密选项XChaCha20-Poly1305。我无法理解的是,libsodium似乎没有提供加密库中常见的“上下文/更新/最终确定”工作方式。
从libsodium中可以清楚地看出,XChaCha20-Poly1305 消息的大小“没有实际限制”。但是实际上,如果我要加密一个多 GB 的文件,我不太清楚您将如何使用 libsodium ?因为显然您只会将fread缓冲区的内容传递给crypto_aead_xchacha20poly1305_ietf_encrypt?
给那些认为这不是主题的人的重要提示
在屈服于同辈压力之后,我确实删除了这篇文章。但是,我应@MaartenBodewes 的要求重新打开了它,他强烈认为这是切入主题,并且非常强烈以至于他付出了一些努力来撰写答案。因此,出于对他努力的尊重,我取消了该帖子。请给我更多的“离题”评论,我已经阅读了足够多的评论!
我正在使用椭圆曲线来生成签名。问题是它每次使用相同的密钥对都会生成不同的签名。我尝试了 Bouncy Castle 库以及ECDsa. 签名得到了两者的验证,但我每次使用相同的密钥对时都想要相同的签名。
怎样才能每次生成相同的签名?或者使用椭圆曲线这是不可能的吗?
我正在更新我的旧函数来加密密码,因为createCipher它已被弃用。
这是我的旧功能:
encrypt(payload) {
let AES192 = crypto.createCipher('aes192', Buffer.from(config.secret))
let crypted = AES192.update(payload, 'utf8', 'hex')
crypted += AES192.final('hex')
return crypted
},
decrypt(payload) {
let AES192 = crypto.createDecipher('aes192', Buffer.from(config.secret))
let decrypted = AES192.update(payload, 'hex', 'utf8')
decrypted += AES192.final('utf8')
return decrypted
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试做的:
encrypt(payload) {
const iv = crypto.randomBytes(96)
const cipher = crypto.createCipheriv('aes192', Buffer.from(config.secret, 'hex'), iv)
const encrypted = cipher.update(payload)
encrypted = Buffer.concat([encrypted, cipher.final()])
return iv.toString('hex') + ':' + encrypted.toString('hex')
},
decrypt(payload) {
let textParts = payload.split(':')
let iv = …Run Code Online (Sandbox Code Playgroud)