I want to use the cypto package to decode a base64 string. From the docs,
http://nodejs.org/docs/v0.3.1/api/crypto.html#hash.digest
I am rather confused on how do do it.
e.g. mystring - base64(string).decode()
Related
I am trying to use LND to create an invoice and then check it. This is quite easy using the command line, but I'm stuck on the encoding of the r_hash in the HTTP API. Docs can be found here.
If I create an invoice using:
curl -X POST 'https://localhost:8080/v1/invoices' -k -H 'Grpc-metadata-macaroon: my-macaroon'
I get something along the lines of
{
"r_hash":"ud8NgqDTgCUri3sqb8D85YaRsnCtnQzY56iLwGWUXA4=",
"payment_request":"lnbc1ps5xjcxpp5h80smq4q6wqz22ut0v4xls8uukrfrvns4kwsek884z9uqev5ts8qdqqcqzpgxqyz5vqsp5c0sxrfllt0hste83mevptfyvgcf9csg05rg8326vvhl9a0mfm73s9qyyssqgcehn536edaxhjpycu4hedl9klkqtkknnng653fdfqxxwpcdncus7gkmtxy9wpeezw9tupwh4nunpt9f0yg233233xgs0c2qpnlqe4sq7jlqxp",
"add_index":"61",
"payment_addr":"w+Bhp/9b7wXk8d5YFaSMRhJcQQ+g0HirTGX+Xr9p36M="
}
The r_hash here is different from what the cli gives me when I look up the invoice: b9df0d82a0d380252b8b7b2a6fc0fce58691b270ad9d0cd8e7a88bc065945c0e.
My problem is I don't know how to convert between the two. I've tried hex and base64. The docs say the r_hash must be encoded as base64.
Got it. The API was returning the hash base64 encoded, and I was able to get the API to accept it hex encoded. This required decoding and re-encoding:
import codecs, base64
codecs.encode(base64.b64decode(h.encode('utf-8')), 'hex')
I have a base64 string encoded in some way, I need to decode it in java, how to do so.
here is the string:
SH78d5yrslxNffkumK+wUR5/riXI+bMPS3f6cJiq5ggYfv0nnPq3Wxws+XCZrrFYFy3+IZimtwobfvEjzfnmXA==
The Java documentation base64 decoding can be found here: base64 encoding/decoding
An example of it in use would look something like:
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
A good jump-off point for understanding base64 encoding/decoding can be found here: understanding base64 encoding
I have two encoded strings that used same encoding method but i don't know what type it is.
I have tried using base64 decode but it didn't work.
This is the first encoded string I have 3qpY0Vw86MZykGfqc7jnVg==
This is the second encoded string I have nB6dtl3iA5IE1Z+g9SpBrw==
They are using same encoding method.
I want to know what type of encoding that used in that strings. Also I want to know how to decode it.
Those base64 payload may be containing something else than a string, like a raw binary, an image, a ciphered payload, etc. that can't be displayed as text.
base64 is not exclusively used to encode text.
For example to save to a file:
$ printf %s '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' | base64 -d > stackoverflow.png
So Ive got a string of:
YDNhZip1cDg1YWg4cCFoKg==
that needs to be decoded using Pythons Base64 module.
Ive written the code
import base64
test = 'YDNhZip1cDg1YWg4cCFoKg=='
print(test)
print(base64.b64decode(test))
which gives the answer
b'`3afup85ah8p!h'
when, according to the website decoders Ive used, its really
`3afup85ah8p!h
Im guessing that its decoding the additional quotes.
Is there some way that I can save this variable with a delimiter, as another type of variable, or run the b64encode on a section of the string as slice doesnt seem to work?
b' is Python's way of delimiting data from bytes, see: What does the 'b' character do in front of a string literal?
i.e., it is decoding it correctly.
I'm writing a webmail app and need to decode Quotedprintable values in the emails header fields.
I've tried several decode functions from various packages on haskell, so far without luck.
How can I decode for example this string:
"freelancermap Newsletter: Erfolgreich =?ISO-8859-1?Q?selbstst=E4ndig?= mit Sicherheit"