2010-08-25 29 views
5

Tôi đã xem ví dụ here. Tất cả tốt và tốt và tôi hiểu nó, tuy nhiên nó dựa vào thư viện bounceycastle cho nhà cung cấp. Tôi không muốn gói thêm bất kỳ thư viện bên thứ ba nào khác với ứng dụng của mình nếu tôi có thể trợ giúp. Tôi không cần bảo mật phong cách knox fort, chỉ cần một số mã hóa đối xứng cơ bản để truyền qua dây. Làm cách nào để tôi có thể thực hiện mã hóa cơ bản trên Android bằng thư viện của bên thứ ba?Mã hóa cơ bản trên Android

nhờ

Trả lời

5

Vâng BouncyCastle được bao gồm trong Android, vì bạn có thể thấy nếu bạn sẽ cố gắng bao gồm nó, bạn sẽ nhận được: D/dalvikvm(9268): DexOpt: not verifying 'Lorg/bouncycastle/x509/extension/SubjectKeyIdentifierStructure;': multiple definitions v.v.

Tuy nhiên, không phải tất cả các thuật toán đều được triển khai - bạn sẽ nhận được NoSuchAlgorithmException. Trong Android 2.2 Tôi tìm thấy những được thực hiện:

PBEWITHSHAAND128BITAES-CBC-BC PBEWITHSHAAND3-KEYTRIPLEDES-CBC 1.2.840.113549.1.1.7 PBEWITHSHA256AND256BITAES-CBC-BC PBEWITHSHAAND192BITAES-CBC-BC DESEDE DES 1.2.840.113549.3.7 PBEWITHSHAAND2-KEYTRIPLEDES-CBC 1.3.14.3.2.7 PBEWITHSHA256AND192BITAES-CBC-BC PBEWITHSHAAND256BITAES-CBC-BC PBEWITHSHAAND40BITRC2-CBC AES 2.16.840.1.101.3.4.1.42 PBEWITHSHA256AND128BITAES-CBC-BC 2.16.840.1.101.3.4.1.22 2.16.840.1.101.3.4.1.2

+1

Tôi nhận được một nhận thức ngắn về cuộc gọi đến doFinal khi mã hóa (sử dụng ví dụ được liên kết) - bất kỳ ý tưởng nào? – MalcomTucker

+0

Vâng, ví dụ chạy tốt trên Nexus của tôi, 2.2. Và bạn không nên nhận được một nhận xét ngắn gọn, nhưng bạn luôn có thể thử đặt: byte [] cipherText = new byte [2048]; Để nắm bắt nếu mã hóa hoạt động, mặc dù bạn sẽ nhận được một số rác trong bản in. –

+1

Mật mã của tôi lớn hơn nhiều - khoảng 3800 byte. Chiều dài byte [] có cần phải là bội số của 16 không? – MalcomTucker

5

Tôi không muốn bó bất kỳ thư viện của bên thứ ba bổ sung với ứng dụng của tôi nếu tôi có thể giúp nó.

Bạn không cần thư viện của bên thứ ba sử dụng javax.crypto. Có các mẫu trực tuyến sử dụng javax.crypto, chẳng hạn như thisthis. Nếu bạn cần một bộ mã hóa Base64, có một trong Android 2.2, hoặc có những triển khai mã nguồn mở có sẵn cho điều đó là tốt.

+0

Bạn có biết các thuật toán mật mã mà Android BC hỗ trợ? Tôi biết nó là một phiên bản tê liệt của BC nhưng không thể tìm thấy những gì nó thực sự hỗ trợ. –

+0

@metalideath: Tắt đầu của tôi, không. Ngoài ra, ai đó đóng gói BC dưới dạng org.spongycastle để vượt qua công cụ "làm tê liệt phiên bản", trong trường hợp những gì bạn cần không có sẵn thông qua gói 'javax.crypto'. – CommonsWare

Các vấn đề liên quan