Шифровать Base64 в Dart - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь преобразовать этот фрагмент кода из Kotlin в Dart. Я новичок в Dart, и я не знаю эквивалентной библиотеки для этого. Если вы, ребята, имеете представление о библиотеке дротиков для шифрования String, я очень ценю это.

import java.security.KeyFactory
import java.security.PublicKey
import java.security.spec.MGF1ParameterSpec
import java.security.spec.X509EncodedKeySpec
import javax.crypto.Cipher
import android.util.Base64
import javax.crypto.spec.OAEPParameterSpec
import javax.crypto.spec.PSource
internal fun String.encrypt(key: String):String{
        val pubKey = key.toPublicKey()
        val parameterSpec =  OAEPParameterSpec(
            Crypto.MD_NAME,
            Crypto.MG_NAME, MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT)
        val cipher: Cipher = Cipher.getInstance(Crypto.CRYPTO_TRANSFORM)
        cipher.init(Cipher.ENCRYPT_MODE, pubKey, parameterSpec)
        val encryptedBytes = cipher.doFinal(this.toByteArray(Charsets.UTF_8))
        return Base64.encodeToString(encryptedBytes,Base64.NO_WRAP)
    }

internal fun String.toPublicKey():PublicKey{
        val keyBytes: ByteArray = Base64.decode( this, Base64.DEFAULT)
        val spec = X509EncodedKeySpec(keyBytes)
        val keyFactory = KeyFactory.getInstance(Crypto.CRYPTO_METHOD)
        return keyFactory.generatePublic(spec)
    }
...