के साथ बाइट सरणी के रूप में हैश को संग्रहीत करना User
इकाई वर्ग में पासवर्ड हैश फ़ील्ड है, जो एक निश्चित लंबाई के साथ एक बाइट सरणी है (32 क्योंकि यह एक SHA-256 हैश है)।जेपीए
@Entity
public class User {
@Column(nullable=false)
private byte[] passwordHash;
...
}
जैसा कि आप देख सकते हैं, मैंने इसे किसी विशेष चीज़ के साथ एनोटेट नहीं किया है, सिर्फ एक न्यूल।
यह काम करता है, लेकिन यह प्रदर्शन करेंगे? मेरा स्कीमा हाइबरनेट द्वारा उत्पन्न होता है, लेकिन मुझे नहीं पता कि यह वास्तव में क्या उत्पन्न करता है (मैं वर्तमान में एक इन-मेमोरी एचएसक्यूएल डेटाबेस का उपयोग कर रहा हूं)।
मैं चिंतित हूं कि, के बाद से यह पता नहीं है कि यह एक निश्चित लंबाई सरणी (Column
एनोटेशन के length
क्षेत्र केवल तार पर लागू होता है), यह एक ब्लॉब क्षेत्र है जिसमें जोड़ा जाता है में इस हैश स्टोर करेगा है कर रहा हूँ एक सूचक के रूप में रिकॉर्ड करें (अगर मैं सही ढंग से समझता हूं कि डाटाबेस कैसे काम करते हैं)।
क्या यह सच है, और मैं यह कैसे बदल सकते हैं? क्या मुझे बेस 64 या हेक्स के साथ हैश को एक स्ट्रिंग के रूप में एन्कोड करना चाहिए, उसमें छोटे प्रदर्शन/शुद्धता प्रभाव को स्वीकार करना चाहिए?
क्यों आप इसे वास्तविक लक्ष्य डेटाबेस के साथ की कोशिश नहीं करते हैं, और देखो यह क्या उत्पन्न करता है? – skaffman
@ स्काफमैन: मैंने डेटाबेस को MySQL में बदल दिया है और यह एक TINYBLOB कॉलम –
उत्पन्न करता है जो मुझे चाहिए BINARY (32) –