I’d suggest that you get clear about your motivations so that if you do approach her, it’s to help her and not yourself. Your needs are important, too, but as I’ll get to in a moment, those needs are for you to work through without bringing her into it. Right now, the focus should be solely on her.
First, you’ll want to consider what it might be like for her to hear from you. She might find it upsetting to be contacted by the person who assaulted her, and you’ll need to honor and respect whatever her reaction is—refusing to speak with you, not responding to a letter you send, expressing anger, etc. On the other hand, she might welcome an apology because it validates her experience and makes her feel less dehumanized, which is a common reaction to being sexually assaulted—she’s finally being acknowledged as a human being with feelings: I’m not crazy. My memories are real. I’m not the only one who witnessed my assault. I felt utterly invisible then but I’m not invisible now. He couldn’t see my pain then, but he sees it now.
When planning what you’ll say, think about how to phrase your apology so that she knows you aren’t asking anything from her—forgiveness, reassurance, absolution, a clean slate. After all, if this is being done for your benefit, it might feel like just another violation.
With that in mind, it will be important to take full ownership for what you’ve done by steering clear of apologies that don’t feel like apologies. One example is saying you’re sorry for the assault, and then minimizing it by offering what sound like excuses rather than explanations. I did this horrible thing to you, but the culture at the time made it seem normal and I was a dumb teenager who didn’t know any better. The genuine apology is simply “I did this horrible thing to you, and I’m so, so sorry.” Likewise, don’t dilute your apology by explaining how proud you are of who you’ve become—that may be little solace if while you were experiencing great growth, she had been sitting with what you did to her all this time. Another non-apology apology might sound like this: I’m sorry for assaulting you. I too know how it feels to be powerless, given my experience during such and such, and while what I did was worse, I can empathize with you. In fact, you don’t know how another person feels, and making the apology about your experience rather than hers will leave her feeling diminished and invisible all over again.
In your apology, you could also ask if there’s anything she thinks you can do at this point that would help her. Maybe she needs to hear something specific from you that she’s wanted to hear for years. Maybe she’d like you to hear about the depth of the pain you inflicted and how it has affected her life—without you becoming defensive, but simply listening and taking it in.