- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将模型类保存在本地存储中用于缓存目的
我使用以下方法将对象写入文件
private void writeData(Object data, String fileName) {
try {
FileOutputStream fos = context.openFileOutput(fileName,
Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(data);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
下面是从文件中读取对象的代码
public Object readData(String fileName) {
Object data = null;
if (context != null) {
try {
FileInputStream fis = context.openFileInput(fileName);
ObjectInputStream is = new ObjectInputStream(fis);
data = is.readObject();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return data;
}
它运行良好,但在某些设备上它会抛出奇怪的异常即
Caused by: java.security.NoSuchAlgorithmException: MessageDigest SHA implementation not found
我不知道后台发生了什么,readData 是如何抛出 NoSuchAlogorithmException 的,我没有在其中使用任何 MessageDigest。我在 Java 和 Android 文档中搜索了很多关于 ObjectInputStream.readObject() 的信息。我没有得到任何解决方案。
我试图为 NoSuchAlgorithmException
放置 catch 类,但在 eclipse 中它显示为错误
Unreachable catch block for NoSuchAlgorithmException. This exception is never thrown from the try statement body
这里附上完整的崩溃日志
java.lang.Error: java.security.NoSuchAlgorithmException: MessageDigest SHA implement ation not found
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:420)
at java.io.ObjectStreamClass.cre ateClassDesc(ObjectStreamClass.java:259)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1069)
at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2375)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1662)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1803)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at java.util.ArrayList.readObject(ArrayList.java:657)
at java.lang.reflect.Method.invokeN ative(N ative Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at com.test.util.CacheManager.readD ata(CacheManager.java:104)
at com.test.SplashActivity.onCre ate(SplashActivity.java:178)
at android.app.Activity.performCre ate(Activity.java:5206)
at android.app.Instrument ation.callActivityOnCre ate(Instrument ation.java:1083)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
at android.os.Handler.disp atchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeN ative(N ative Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
at dalvik.system.N ativeStart.main(N ative Method)
Caused by: java.security.NoSuchAlgorithmException: MessageDigest SHA implement ation not found
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:177)
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:151)
at java.security.MessageDigest.getInstance(MessageDigest.java:91)
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:418)
... 42 more
java.security.NoSuchAlgorithmException: MessageDigest SHA implement ation not found
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:177)
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:151)
at java.security.MessageDigest.getInstance(MessageDigest.java:91)
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:418)
at java.io.ObjectStreamClass.cre ateClassDesc(ObjectStreamClass.java:259)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1069)
at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2375)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1662)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1803)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at java.util.ArrayList.readObject(ArrayList.java:657)
at java.lang.reflect.Method.invokeN ative(N ative Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at com.test.util.CacheManager.readD ata(CacheManager.java:104)
at com.test.SplashActivity.onCre ate(SplashActivity.java:178)
at android.app.Activity.performCre ate(Activity.java:5206)
at android.app.Instrument ation.callActivityOnCre ate(Instrument ation.java:1083)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
at android.os.Handler.disp atchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeN ative(N ative Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
at dalvik.system.N ativeStart.main(N ative Method)
编辑
这是我尝试编写和阅读的类。我使用的内部类 AutoPromoData、OrderBkgPixData SubscriptionUrlData 等都在此类内部,包含用于索引和 url 的简单 int 和字符串。
配置.jvaa
import java.util.ArrayList;
import com.google.gson.annotations.SerializedName;
import com.test.model.CacheTimeData;
import com.test.SplashUrlData;
import com.test.SubscriptionUrlData;
public class Configuration {
int version;
@SerializedName("pivotCodeRetour")
int pivotCodeRetour;
ArrayList<WSTimeOutData> WSTimeOut;
ArrayList<AutoPromoData> AutoPromo;
ArrayList<StreetMktData> StressMkt;
ArrayList<OrderBkgPixData> OrderBkgPix;
ArrayList<LogBkgPixData> LogBkgPix;
ArrayList<SubscriptionUrlData> SubscriptionBkgPix;
String Voucher;
ArrayList<PhoneContactData> PhoneContact;
String ProdAvailability;
String PaymentUrl;
String TravSaleHomeUrl;
String TravCartUrl;
String TravOrderDetailUrl;
String TicketSaleHomeUrl;
String TicketOrderUrl;
String CGV;
String wishlist;
int pushCart;
int pushVoucher;
ArrayList<SplashUrlData> Splashscreen;
ArrayList<CacheTimeData> CacheTime;
public int getPushCart() {
return pushCart;
}
public ArrayList<SubscriptionUrlData> getSubscriptionBkgPix() {
return SubscriptionBkgPix;
}
public void setSubscriptionBkgPix(
ArrayList<SubscriptionUrlData> subscriptionBkgPix) {
SubscriptionBkgPix = subscriptionBkgPix;
}
public void setPushCart(int pushCart) {
this.pushCart = pushCart;
}
public int getPushVoucher() {
return pushVoucher;
}
public void setPushVoucher(int pushVoucher) {
this.pushVoucher = pushVoucher;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
public ArrayList<WSTimeOutData> getWSTimeOut() {
return WSTimeOut;
}
public void setWSTimeOut(ArrayList<WSTimeOutData> wSTimeOut) {
WSTimeOut = wSTimeOut;
}
public ArrayList<AutoPromoData> getAutoPromo() {
return AutoPromo;
}
public void setAutoPromo(ArrayList<AutoPromoData> autoPromo) {
AutoPromo = autoPromo;
}
public ArrayList<StreetMktData> getStressMkt() {
return StressMkt;
}
public void setStressMkt(ArrayList<StreetMktData> stressMkt) {
StressMkt = stressMkt;
}
public ArrayList<OrderBkgPixData> getOrderBkgPix() {
return OrderBkgPix;
}
public void setOrderBkgPix(ArrayList<OrderBkgPixData> orderBkgPix) {
OrderBkgPix = orderBkgPix;
}
public ArrayList<LogBkgPixData> getLogBkgPix() {
return LogBkgPix;
}
public void setLogBkgPix(ArrayList<LogBkgPixData> logBkgPix) {
LogBkgPix = logBkgPix;
}
public String getVoucher() {
return Voucher;
}
public void setVoucher(String voucher) {
Voucher = voucher;
}
public ArrayList<PhoneContactData> getPhoneContact() {
return PhoneContact;
}
public void setPhoneContact(ArrayList<PhoneContactData> phoneContact) {
PhoneContact = phoneContact;
}
public String getProdAvailability() {
return ProdAvailability;
}
public void setProdAvailability(String prodAvailability) {
ProdAvailability = prodAvailability;
}
public String getPaymentUrl() {
return PaymentUrl;
}
public void setPaymentUrl(String paymentUrl) {
PaymentUrl = paymentUrl;
}
public String getTravSaleHomeUrl() {
return TravSaleHomeUrl;
}
public void setTravSaleHomeUrl(String travSaleHomeUrl) {
TravSaleHomeUrl = travSaleHomeUrl;
}
public String getTravCartUrl() {
return TravCartUrl;
}
public void setTravCartUrl(String travCartUrl) {
TravCartUrl = travCartUrl;
}
public String getTravOrderDetailUrl() {
return TravOrderDetailUrl;
}
public void setTravOrderDetailUrl(String travOrderDetailUrl) {
TravOrderDetailUrl = travOrderDetailUrl;
}
public String getTicketSaleHomeUrl() {
return TicketSaleHomeUrl;
}
public void setTicketSaleHomeUrl(String ticketSaleHomeUrl) {
TicketSaleHomeUrl = ticketSaleHomeUrl;
}
public String getTicketOrderUrl() {
return TicketOrderUrl;
}
public void setTicketOrderUrl(String ticketOrderUrl) {
TicketOrderUrl = ticketOrderUrl;
}
public ArrayList<SplashUrlData> getSplashscreen() {
return Splashscreen;
}
public void setSplashscreen(ArrayList<SplashUrlData> splashscreen) {
Splashscreen = splashscreen;
}
public ArrayList<CacheTimeData> getCacheTime() {
return CacheTime;
}
public void setCacheTime(ArrayList<CacheTimeData> cacheTime) {
CacheTime = cacheTime;
}
public int getPivotCodeRetour() {
return pivotCodeRetour;
}
public void setPivotCodeRetour(int pivotCodeRetour) {
this.pivotCodeRetour = pivotCodeRetour;
}
public String getCGV() {
return CGV;
}
public void setCGV(String cGV) {
CGV = cGV;
}
public String getWishlist() {
return wishlist;
}
public void setWishlist(String wishlist) {
this.wishlist = wishlist;
}
}
最佳答案
这是针对相关设备的错误报告,但您可以通过始终在可序列化类中定义自己的 serialVersionUID 来避免它,出于其他原因无论如何您都应该这样做。当 Java 为这个缺失的类属性创建默认值时,就会发生这种情况。
关于java - NoSuchAlgorithmException : MessageDigest SHA implementation not found while ObjectInputStream. readObject() Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25447804/
安全服务 API 似乎不允许我直接计算哈希。有很多公共(public)领域和自由许可的版本可用,但如果可能的话,我宁愿使用系统库实现。 可以通过 NSData 或普通指针访问数据。 哈希的加密强度对我
我有一堆大对象,以及它们的结构和它们的向量。有时检查复合对象的完整性很重要;为此,我正在使用对象的 Sha256“签名”。 至少有两种方法可以定义复合对象的签名:通过计算组件串联的sha,或者通过计算
研究了一个 cpu 矿工的源代码,我发现了这段代码: work->data[20] = 0x80000000; 好吧,我问了编码,他的回答是: “这些值是标准 SHA-2 填充的一部分” 谷歌搜索“s
您是否需要许可证才能将 SHA-1 或 SHA-2 用于商业目的? 最佳答案 它最初由 NSA 为安全 DSA 加密创建,然后被 NIST 采用以维护算法的所有方面以及 SHA(2 和 3)。 这是一
谁能解释一下 SHA-256 和 RIPEMD-160,哪种算法通常更快,性能和空间比较是什么(如果有)?我所说的空间比较并不是指 160 位和 256 位,而是指冲突频率、生产环境中空间要求的差异。
我对 SHA-2 和 SHA-256 之间的区别有点困惑,并且经常听到它们互换使用。我认为 SHA-2 是哈希算法的“家族”,而 SHA-256 是该家族中的特定算法。任何人都可以消除困惑。 最佳答案
我正在尝试从 SHA-1 更改为 SHA-512 以获得更好的安全性,但我不完全清楚如何进行更改。 这是我使用 SHA-1 的方法: public static String sha1Convert(
在我的 C# 应用程序中,我使用 RSA 对文件进行签名,然后再由上传者上传到我公司的数据库中,在这里我必须选择 SHA-1 或 SHA-2 来计算哈希值。与编程中的任何其他组件一样,我知道必须有一个
我正在研究 SHA1 、 SHA-256 、 SHA-512 在不同处理器上的速度(计算哈希的时间) 这些散列算法可以分解为跨多个核心/线程运行吗? 最佳答案 如果您想将计算单个哈希的执行并行化(无论
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
这个问题在这里已经有了答案: SHA2 password hashing in java (4 个答案) 关闭 9 年前。 我需要计算文件的 SHA-2 或 SHA-3。我没有提交任何代码示例来说明
在我的应用中,之前开发者已经使用openssl version 1.0.1e [#include openssl/sha.h]并且已经使用了函数 unsigned char *SHA(const un
我正在尝试实现 SHA-2加密而不是 SHA-1 . 为此,我知道这两种哈希算法之间的位数不同,这让我很困惑。 如何实现这一目标以及我需要在哪些部分进行必要的更改? 我可以使用来自 Java、Pyth
我目前正在使用 SHA-1。我像下面的代码一样使用它,但我想将它更改为 SHA-256。 public String sha1Encrypt(String str) { if(str == nul
我想将一些 Java 代码转换为 C#。 Java 代码: private static final byte[] SALT = "NJui8*&N823bVvy03^4N".getBytes()
我的程序使用 SHA-1 证书进行 SSL 连接。 SHA-2 证书现在已被一些网络服务(Gmail)广泛使用。这会导致在电子邮件通知设置期间阻止与 SMTP 服务器的传入连接。 为了发送电子邮件,我
我在提交中生成差异/更改,以便我可以将其上传到 ReviewBoard。 我使用了“git show d9f7121e8ebd4d1f789dab9f8214ada2h480b9cf”。它给了我 di
我刚刚从这个 HN-post 了解到 git 正在转向新的散列算法(从 SHA-1 到 SHA-256 ) 我想知道是什么让 SHA-256 最适合 git 的用例。 是否有任何/许多强有力的技术原因
是的,我需要降级到 SHA-1 以增加对项目中旧浏览器的兼容性。 有没有办法做到这一点? 我正在使用 Linux Centos 6.5 和 Apache/2.2.15。 我有 3 个文件: SSLCe
在 TLS1.1 和 TLS1.2 中,Cipher(rsa-with-aes-128-cbc-sha) 将使用哪个 Digest(SHA1 或 SHA256)? 最佳答案 根据官方openssl w
我是一名优秀的程序员,十分优秀!