كيفية تشفير وفك تشفير الملف في الروبوت؟ [android]


Answers

كان لي مشكلة مماثلة وتشفير / فك تشفير جاء مع هذا الحل:

public static byte[] generateKey(String password) throws Exception
{
    byte[] keyStart = password.getBytes("UTF-8");

    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
    sr.setSeed(keyStart);
    kgen.init(128, sr);
    SecretKey skey = kgen.generateKey();
    return skey.getEncoded();
}

    public static byte[] encodeFile(byte[] key, byte[] fileData) throws Exception
    {

        SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

        byte[] encrypted = cipher.doFinal(fileData);

        return encrypted;
    }

    public static byte[] decodeFile(byte[] key, byte[] fileData) throws Exception
    {
        SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, skeySpec);

        byte[] decrypted = cipher.doFinal(fileData);

        return decrypted;
    }

لحفظ ملف مشفر إلى سد:

File file = new File(Environment.getExternalStorageDirectory() + File.separator + "your_folder_on_sd", "file_name");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] yourKey = generateKey("password");
byte[] filesBytes = encodeFile(yourKey, yourByteArrayContainigDataToEncrypt);
bos.write(fileBytes);
bos.flush();
bos.close();

لفك استخدام ملف:

byte[] yourKey = generateKey("password");
byte[] decodedData = decodeFile(yourKey, bytesOfYourFile);

للقراءة في ملف إلى بايت صفيف هناك طريقة مختلفة هناك. مثال: http://examples.javacodegeeks.com/core-java/io/fileinputstream/read-file-in-byte-array-with-fileinputstream/

Question

أريد تشفير ملف وتخزينه في بطاقة سد. أريد فك تشفير هذا الملف المشفر وتخزينه في بطاقة سد مرة أخرى. لقد حاولت لتشفير الملف عن طريق فتح كما تيار الملف وتشفير ولكن لا يعمل. أريد بعض الفكرة حول كيفية القيام بذلك.




لدينا نفس المشكلة، وحلها من قبل شخص ما في سؤالي الموضوع. يجب عليك فقط إلقاء نظرة على: سيفرينبوتستريم و سيفروتبوتستريم. وهي تستخدم لتشفير وفك تشفير بايت تيارات. للحصول على شفرة المصدر مفصلة تحقق من كيريل الإجابة في هذا الرابط: كيفية تشفير ملف من بطاقة سد باستخدام إس في الروبوت؟