What is 'android.security.MessageDigest''?

前端 未结 3 1653
挽巷
挽巷 2020-12-05 10:45

One of several thousand customers reported an error in one of my apps. The error is:

java.lang.NoClassDefFoundError - android.security.MessageDigest
<         


        
3条回答
  •  一向
    一向 (楼主)
    2020-12-05 10:56

    I have found simple work around! Just create in src directory package android\security and place MessageDigest.java inside.

    package android.security;
    
    import java.security.NoSuchAlgorithmException;
    
    public class MessageDigest
    {
        private java.security.MessageDigest instance;
    
        public MessageDigest() {}
    
        private MessageDigest(java.security.MessageDigest instance)
        {
            this.instance = instance;
        }
    
        public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
        {
            if (algorithm == null) return null;
    
            try
            {
                if (algorithm.equals("SHA-1"))
                    return (MessageDigest) Class.forName("android.security.Sha1MessageDigest").newInstance();
                else if (algorithm.equals("MD5"))
                    return (MessageDigest) Class.forName("android.security.Md5MessageDigest").newInstance();
            }
            catch (Exception e) {}
    
            return new MessageDigest(java.security.MessageDigest.getInstance(algorithm));
        }
    
        public void update(byte[] input)
        {
            instance.update(input);
        }
    
        public byte[] digest()
        {
            return instance.digest();
        }
    
        public byte[] digest(byte[] input)
        {
            return instance.digest(input);
        }
    }
    

    It is works, but may accrue other exceptions because of map library not match android version!

提交回复
热议问题