---
product: Chilkat
product_version: 11.7.0
language: activex
language_label: ActiveX
class: SecureString
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/xChilkatSecureStringRef.html
---
# Chilkat SecureString — ActiveX — v11.7.0

> Chilkat 11.7.0 · language=activex · class=SecureString
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/SecureString.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/activex/guide.md`.

## Purpose

**Store, append, compare, hash, verify, and securely access sensitive string values.**

`Chilkat.SecureString` holds sensitive text in an encrypted in-memory form while still allowing controlled operations on the value. It can append clear-text strings, append text from a `StringBuilder`, append another `SecureString`, load text from a file, return the clear-text value when needed, compare secure strings, mark the value read-only, maintain a hash of the current value, and verify a supplied hash against that maintained value.

**Encrypted in-memory value**

Store sensitive text in a form that is decrypted only when needed for access, modification, comparison, or hashing.

**Append safely**

Append clear-text strings, `StringBuilder` content, or another `SecureString`; the value is then re-encrypted.

**Read-only protection**

Set `ReadOnly` to prevent later modification of the secure string.

**Hash maintenance**

Set `MaintainHash` to a supported hash algorithm such as `sha256`, `sha512`, `sha1`, or `md5`.

**Hash output and verification**

Retrieve the current hash value in an encoding such as hex or Base64, or verify a supplied encoded hash with `VerifyHash`.

**Compare and access**

Compare two secure strings with `SecStrEquals`, or call `Access` when the clear-text value is required.

**Common pattern:** Create a `SecureString`, load or append the sensitive text, set `MaintainHash` if later verification is needed, and optionally set `ReadOnly` after the final value is established. Use `Access` only at the point where the clear-text string is actually needed, and check `LastErrorText` if an append, file load, hash, or verification operation fails.

**Hash note:** `VerifyHash` depends on `MaintainHash` having already been set so the object maintains an internal hash for the current secure string value.

## Object creation, unlocking and error handling

**Object Creation**

```clike
Note:
For a specific major version, use "Chilkat.SecureString.<major_version>", such as "Chilkat.SecureString.10" for Chilkat v10.*.*
See Chilkat ActiveX Object Creation

(ASP)
set obj = Server.CreateObject("Chilkat.SecureString")

(AutoIt)
$obj = ObjCreate("Chilkat.SecureString")

(Visual Basic 6.0)
Dim obj As New ChilkatSecureString

(VBScript)
set obj = CreateObject("Chilkat.SecureString")

(VBA, such as Excel)
Dim obj As New ChilkatSecureString
See How to Use ActiveX in Excel

(Delphi)
obj := TChilkatSecureString.Create(Self);

(FoxPro)
loObject = CreateObject('Chilkat.SecureString')

(Xbase++)
oObject := CreateObject("Chilkat.SecureString")

(PowerBuilder)
lole_object = create oleobject
li_rc = lole_object.ConnectToNewObject("Chilkat.SecureString")

(SQL Server)
EXEC @hr = sp_OACreate 'Chilkat.SecureString', @obj OUT

(Javascript)
var obj = new ActiveXObject("Chilkat.SecureString");
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in ActiveX.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `DebugLogFilePath As String` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastBinaryResult` | `LastBinaryResult As Variant (read-only)` | read-only | This property is mainly used in SQL Server stored procedures to retrieve binary data from the last method call that returned binary data. |
| `LastErrorHtml` | `LastErrorHtml As String (read-only)` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `LastErrorText As String (read-only)` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `LastErrorXml As String (read-only)` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `LastMethodSuccess As Long` | read/write | Indicates the success or failure of the most recent method call: `1` means success, `0` means failure. |
| `LastStringResult` | `LastStringResult As String (read-only)` | read-only | In SQL Server stored procedures, this property holds the string return value of the most recent method call that returns a string. |
| `LastStringResultLen` | `LastStringResultLen As Long (read-only)` | read-only | The length, in characters, of the string contained in the LastStringResult property. |
| `VerboseLogging` | `VerboseLogging As Long` | read/write | If set to `1`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `Version As String (read-only)` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `MaintainHash` | property, read/write | `MaintainHash As String` |
| `ReadOnly` | property, read/write | `ReadOnly As Long` |
| `Access` | method | `Access() As String` |
| `Append` | method | `Append(str As String) As Long` |
| `AppendSb` | method | `AppendSb(sb As ChilkatStringBuilder) As Long` |
| `AppendSecure` | method | `AppendSecure(secStr As ChilkatSecureString) As Long` |
| `HashVal` | method | `HashVal(encoding As String) As String` |
| `LoadFile` | method | `LoadFile(path As String, charset As String) As Long` |
| `SecStrEquals` | method | `SecStrEquals(secStr As ChilkatSecureString) As Long` |
| `VerifyHash` | method | `VerifyHash(hashVal As String, encoding As String) As Long` |

## Properties

### SecureString.MaintainHash

`Chilkat 11.7.0 · activex · SecureString · MaintainHash · property · read/write · since 9.5.0.71`

```
MaintainHash As String
```

If set to the name of a hash algorithm, then a hash of the current string value is maintained. This allows for the hash to be verified via the VerifyHash method. Possible hash algorithm names are `sha1`, `sha256`, `sha384`, `sha512`, `md5`, `md2`, `ripemd160`, `ripemd128`,`ripemd256`, and `ripemd320`.

### SecureString.ReadOnly

`Chilkat 11.7.0 · activex · SecureString · ReadOnly · property · read/write · since 9.5.0.71`

```
ReadOnly As Long
```

Can be set to `1` to make this secure string read-only (cannot be modified).

## Methods

### SecureString.Access

`Chilkat 11.7.0 · activex · SecureString · Access · method · since 9.5.0.71`

```
Access() As String
```

Returns the clear-text string value.

Returns `Nothing` on failure

### SecureString.Append

`Chilkat 11.7.0 · activex · SecureString · Append · method · since 9.5.0.71`

```
Append(str As String) As Long
```

Appends a clear-text string to this secure string. The in-memory data will be decrypted, the string will be appended, and then it will be re-encrypted. Can return `0` if the string has been marked as read-only via the ReadOnly property.

Returns 1 for success, 0 for failure.

### SecureString.AppendSb

`Chilkat 11.7.0 · activex · SecureString · AppendSb · method · since 9.5.0.71`

```
AppendSb(sb As ChilkatStringBuilder) As Long
```

Appends a clear-text string contained in a StringBuilder to this secure string. The in-memory data will be decrypted, the string will be appended, and then it will be re-encrypted. Can return `0` if the string has been marked as read-only via the ReadOnly property.

Returns 1 for success, 0 for failure.

### SecureString.AppendSecure

`Chilkat 11.7.0 · activex · SecureString · AppendSecure · method · since 9.5.0.71`

```
AppendSecure(secStr As ChilkatSecureString) As Long
```

Appends the contents of a secure string to this secure string. The in-memory data will be decrypted, the secure string will be appended, and then it will be re-encrypted. Can return `0` if this string has been marked as read-only via the ReadOnly property.

Returns 1 for success, 0 for failure.

### SecureString.HashVal

`Chilkat 11.7.0 · activex · SecureString · HashVal · method · since 9.5.0.71`

```
HashVal(encoding As String) As String
```

Returns the hash value for the current value of this secure string. The `encoding` specifies the encoding to be used. It can be any of the binary encoding algorithms, such as `base64`, `hex`, and many more listed at [Chilkat Binary Encodings](https://www.chilkatsoft.com/binary_encodings.asp)

Returns `Nothing` on failure

### SecureString.LoadFile

`Chilkat 11.7.0 · activex · SecureString · LoadFile · method · since 9.5.0.71`

```
LoadFile(path As String, charset As String) As Long
```

Loads the contents of a file into this secure string. The current contents of this object are replaced with the new text from the file.

Returns 1 for success, 0 for failure.

### SecureString.SecStrEquals

`Chilkat 11.7.0 · activex · SecureString · SecStrEquals · method · since 9.5.0.71`

```
SecStrEquals(secStr As ChilkatSecureString) As Long
```

Returns `1` if the `secStr` equals the contents of this secure string.

Returns 1 for success, 0 for failure.

### SecureString.VerifyHash

`Chilkat 11.7.0 · activex · SecureString · VerifyHash · method · since 9.5.0.71`

```
VerifyHash(hashVal As String, encoding As String) As Long
```

Verifies the `hashVal` against the hash value stored for the current value of this secure string. The MaintainHash property must've previously been set for this secure string to maintain an internal hash. The `encoding` specifies the encoding of the `hashVal`. It can be any of the binary encoding algorithms, such as `base64`, `hex`, and many more listed at [Chilkat Binary Encodings](https://www.chilkatsoft.com/binary_encodings.asp)

Returns 1 for success, 0 for failure.

## Related classes

[`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/activex/classes/StringBuilder.md)

