Comments (2)
Found a solution.
We must initialize LazySodium with ISO_8859_1
charset:
val lazySodium = LazySodiumAndroid(SodiumAndroid(), Charsets.ISO_8859_1)
then we must use the same charset for plain string methods
val cek = lazySodium.keygen(AEAD.Method.XCHACHA20_POLY1305_IETF)
val plainStringCek = cek.getAsPlainString(Charsets.ISO_8859_1)
val restoredCek = Key.fromPlainString(plainStringCek, Charsets.ISO_8859_1)
from lazysodium-android.
Using asPlainString
and fromPlainString
is pretty dangerous because it uses UTF-8 as an encoding. Generally you should encode using Hex (we have these in LS as Key.asHexString
and Key.fromHexString
) or Base64.
Converting raw bytes to a UTF-8 string can lead to inconsistent outputs as you have found out. In your case you can use:
val cek = lazySodium.keygen(AEAD.Method.XCHACHA20_POLY1305_IETF)
val hexStringCek = cek.asHexString
val restoredCek = Key.fromHexString(hexStringCek)
from lazysodium-android.
Related Issues (20)
- Getting UnsatisfiedLinkError when I try to init lazySodium HOT 2
- LazySodium compilation from scratch for F-Droid HOT 9
- JNA vulnerabilities HOT 3
- Keygen XCHACHA20_POLY1305_IETF HOT 2
- Possible future issue of using this repository? HOT 5
- Lazysodium-android was removed from Google Play. HOT 5
- unable to dissolve dependency HOT 3
- file encryption example
- Weird warning when building a release version: "Missing classes detected while running R8." HOT 3
- Decryption not working on real device, but on emulator it works fine HOT 1
- Documentation link in the readme is broken HOT 1
- A getting started link in the wiki is broken HOT 1
- How to import the library HOT 2
- LazySodiumAndroid.cryptoKdfDeriveFromKey() throws an exception if key length exceeds 32 bytes HOT 1
- Base64 import error in Android SDK version below 27 HOT 3
- cryptoAeadAES256GCM is not available
- Native library (com/sun/jna/android-aarch64/libjnidispatch.so) not found in resource path (.) HOT 3
- Misleading readme: the library is NOT complete libsodium for android, it's very limited HOT 1
- Release 5.1.1 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lazysodium-android.