全部产品
Search
文档中心

:Memulai Cepat SDK Enkripsi untuk Java

更新时间:Jul 02, 2025

SDK Enkripsi adalah pustaka enkripsi sisi klien yang digunakan bersama dengan Key Management Service (KMS). Dengan SDK ini, Anda dapat mengenkripsi dan mendekripsi data, serta menandatangani dan memverifikasi tanda tangan. Panduan ini menjelaskan cara menggunakan SDK Enkripsi untuk Java dalam mengenkripsi dan mendekripsi data.

Informasi latar belakang

Untuk informasi lebih lanjut tentang contoh kode, kunjungi alibabacloud-encryption-sdk-java.

Instal SDK Enkripsi di mesin lokal Anda

  1. Kompilasi dan instal SDK Enkripsi.

    git clone https://github.com/aliyun/alibabacloud-encryption-sdk-java.git
    cd alibabacloud-encryption-sdk-java
    mvn clean install -DskipTests
  2. Tambahkan dependensi ke proyek Anda.

    <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-encryption-sdk-java</artifactId>
        <version>X.X.X</version>
    </dependency>

Instal SDK Enkripsi dari repositori Maven

Tambahkan dependensi alibabacloud-encryption-sdk-java ke proyek Anda. Proyek Anda akan secara otomatis mengunduh paket Java yang diterbitkan oleh SDK Enkripsi dari repositori Maven.

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-encryption-sdk-java</artifactId>
    <version>X.X.X</version>
</dependency>
Catatan

Untuk informasi lebih lanjut tentang versi terbaru SDK Enkripsi, kunjungi Alibaba Cloud Encryption SDK for Java.

Contoh enkripsi dan dekripsi data

Catatan

Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan pasangan AccessKey untuk melakukan operasi merupakan operasi berisiko tinggi. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. Hindari menyimpan ID AccessKey dan Rahasia AccessKey dalam kode proyek Anda karena dapat menyebabkan kebocoran dan membahayakan keamanan semua sumber daya akun Anda.

Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan autentikasi identitas.

  • Enkripsi dan dekripsi data tipe larik byte.

    public class BasicEncryptionExample {
        private static final String ACCESS_KEY_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static final String ACCESS_KEY_SECRET = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        private static final String CMK_ARN = "acs:kms:RegionId:UserId:key/CmkId";
        private static final byte[] PLAIN_TEXT = "Hello World".getBytes(StandardCharsets.UTF_8);
    
        public static void main(String[] args) {
            // 1. Konfigurasikan parameter untuk mengakses Alibaba Cloud.
            AliyunConfig config = new AliyunConfig();
            config.withAccessKey(ACCESS_KEY_ID, ACCESS_KEY_SECRET);
    
            // 2. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud.
            AliyunCrypto aliyunSDK = new AliyunCrypto(config);
    
            // 3. Buat penyedia yang menyediakan kunci data atau tanda tangan.
            BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN);
            // Konfigurasikan algoritma. Algoritma default adalah AES_GCM_NOPADDING_256.
            //provider.setAlgorithm(CryptoAlgorithm.SM4_GCM_NOPADDING_128);
    
            // 4. Konfigurasikan konteks enkripsi.
            Map<String, String> encryptionContext = new HashMap<>();
            encryptionContext.put("one", "one");
            encryptionContext.put("two", "two");
    
            // 5. Panggil operasi Enkripsi dan Dekripsi.
            CryptoResult<byte[]> cipherResult = aliyunSDK.encrypt(provider, PLAIN_TEXT, encryptionContext);
            CryptoResult<byte[]> plainResult = aliyunSDK.decrypt(provider, cipherResult.getResult());
    
            Assert.assertArrayEquals(PLAIN_TEXT, plainResult.getResult());
        }
    }
    Catatan
  • Enkripsi dan dekripsi data tipe aliran byte.

    public class FileStreamSample {
        private static final String FILE = "README.md";
        // accessKeyId accessKeySecret
        private static final String ACCESS_KEY_ID = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static final String ACCESS_KEY_SECRET = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Sistem log.
        private static final Logger LOGGER = LoggerFactory.getLogger(FileStreamSample.class);
        // ID kunci master pelanggan (CMK) dalam format Nama Sumber Daya Alibaba Cloud (ARN).
        private static final String CMK_ARN = "acs:kms:RegionId:UserId:key/CmkId";
    
        public static void main(String[] args) throws IOException {
            AliyunConfig config = new AliyunConfig();
            config.withAccessKey(ACCESS_KEY_ID, ACCESS_KEY_SECRET);
            encryptStream(config);
            decryptStream(config);
            Assert.assertEquals(getFileMD5(FILE), getFileMD5(FILE + ".decrypted"));
        }
    
        private static void encryptStream(AliyunConfig config) throws IOException {
            // 1. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud.
            AliyunCrypto aliyunSDK = new AliyunCrypto(config);
    
            // 2. Konfigurasikan konteks enkripsi.
            final Map<String, String> encryptionContext = new HashMap<>();
            encryptionContext.put("this", "context");
            encryptionContext.put("can help you", "to confirm");
            encryptionContext.put("this data", "is your original data");
    
            // 3. Buat penyedia yang menyediakan kunci data.
            BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN);
    
            // 4. Buat aliran masukan dan keluaran.
            FileInputStream inputStream = new FileInputStream(FILE);
            FileOutputStream outputStream = new FileOutputStream(FILE + ".encrypted");
    
            // 5. Panggil operasi Enkripsi.
            try {
                aliyunSDK.encrypt(provider, inputStream, outputStream, encryptionContext);
            } catch (InvalidAlgorithmException e) {
                System.out.println("Gagal.");
                System.out.println("Pesan kesalahan: " + e.getMessage());
            }
        }
    
        private static void decryptStream(AliyunConfig config) throws IOException {
            // 1. Buat objek SDK dan tentukan parameter yang digunakan untuk mengakses Alibaba Cloud.
            AliyunCrypto aliyunSDK = new AliyunCrypto(config);
    
            // 2. Buat penyedia yang menyediakan kunci data.
            BaseDataKeyProvider provider = new DefaultDataKeyProvider(CMK_ARN);
    
            // 3. Buat aliran masukan dan keluaran.
            FileInputStream inputStream = new FileInputStream(FILE + ".encrypted");
            FileOutputStream outputStream = new FileOutputStream(FILE + ".decrypted");
    
            // 4. Panggil operasi Dekripsi.
            try {
                aliyunSDK.decrypt(provider, inputStream, outputStream);
            } catch (InvalidAlgorithmException e) {
                System.out.println("Gagal.");
                System.out.println("Pesan kesalahan: " + e.getMessage());
            }
        }
    
        private static String getFileMD5(String fileName) {
            File file = new File(fileName);
            if  (!file.isFile()) {
                return null;
            }
            MessageDigest digest;
            byte[] buffer = new byte[4096];
            try (FileInputStream in = new FileInputStream(file)){
                digest = MessageDigest.getInstance("MD5");
                int len;
                while  ((len = in.read(buffer)) != -1) {
                    digest.update(buffer,  0 , len);
                }
                return Hex.encodeHexString(digest.digest());
            }  catch  (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }